当前位置: 首页 > MySQL数据库

SQL中的union和union all怎么使用

时间:2026-01-26 14:21:00
概念

MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

UNION 操作符选取不同的值,如果允许得到重复的值,可以使用 UNION ALL

基础语法
--unionSELECTcolumn_name(s)FROMtable1UNIONSELECTcolumn_name(s)FROMtable2;--unionallSELECTcolumn_name(s)FROMtable1UNIONALLSELECTcolumn_name(s)FROMtable2;

注意:
UNION 内部的每个 SELECT 语句必须拥有相同数量的列

列也必须拥有相似的数据类型

每个 SELECT 语句中的列的顺序必须相同

使用技巧

我们发现我们用 UNION 得到的结果都是必须是相同的,这就不得不提 inor 这两个关键字了

--inselect*fromuserswherenamein('sbc','bhy');--orselect*fromuserswherename='sbc'orname='bhy';select*fromuserswherename='sbc'ortel='123456';--unionselect*fromuserswherename='sbc'unionselect*fromuserswherename='bhy';select*fromuserswherename='sbc'unionselect*fromuserswheretel='123456';

通过在用户表(users)这几个select语句中我们比较一下

如果我们想要名字为 sbc 或者 bhy 的用户我们可以用inorunion都可以实现

如果在较大的数据量下差距就会有明显的差距,如果 name 字段存在索引,这几种方法都是不分上下的;可是如果像 or 写法的第二种情况,那数据库都会去找两个字段各自的索引吗,答案不是的,数据库只会寻找一个字段的索引,而另一个字段就需要全局查询

这样遇到较大的数据量就会耗费大量的时间,但是 union 方法的第二种方法就会引用两次索引。

区别
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素