设为首页 收藏本站
查看: 824|回复: 0

[经验分享] Mysql联合查询union和union all的使用介绍

[复制链接]

尚未签到

发表于 2017-12-11 20:18:25 | 显示全部楼层 |阅读模式
Mysql的联合查询命令UNION和UNION ALL,总结了使用语法和注意事项,以及学习例子和项目例子,需要的朋友可以参考下 一、UNION和UNION ALL的作用和语法 UNION 用于合......
DSC0000.jpg

  
Mysql的联合查询命令UNION和UNION ALL,总结了使用语法和注意事项,以及学习例子和项目例子,需要的朋友可以参考下
  
一、UNION和UNION ALL的作用和语法
  
UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。
  
UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。
  
同时,每条 SELECT 语句中的列的顺序必须相同.
  
SQL UNION 语法:
  
sql脚本代码如下:
  

SELECT column_name FROM table1  
UNION
  
SELECT column_name FROM table2
  

  注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
  
当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行
  
SQL UNION ALL 语法
  
sql脚本代码如下:
  

SELECT column_name FROM table1  
UNION ALL
  
SELECT column_name FROM table2
  

  注释:另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
  
注意:1、UNION 结果集中的列名总是等于第一个 SELECT 语句中的列名
  
2、UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同
  
二、union的用法及注意事项
  
union:联合的意思,即把两次或多次查询结果合并起来。
  
要求:两次查询的列数必须一致
  
推荐:列的类型可以不一样,但推荐查询的每一列,想对应的类型以一样
  
可以来自多张表的数据:多次sql语句取出的列名可以不一致,此时以第一个sql语句的列名为准。
  
如果不同的语句中取出的行,有完全相同(这里表示的是每个列的值都相同),那么union会将相同的行合并,最终只保留一行。也可以这样理解,union会去掉重复的行。
  
如果不想去掉重复的行,可以使用union all。
  
如果子句中有order by,limit,需用括号()包起来。推荐放到所有子句之后,即对最终合并的结果来排序或筛选。
  
如:
  
sql脚本代码如下:
  

(select * from a order by>  

  在子句中,order by 需要配合limit使用才有意义。如果不配合limit使用,会被语法分析器优化分析时去除。
  
三、学习例子
  
下面的例子中使用的原始表:
  

Employees_China:  

  sql脚本代码如下:
  

E_ID E_Name  
01 Zhang, Hua
  
02 Wang, Wei
  
03 Carter, Thomas
  
04 Yang, Ming
  
Employees_USA:
  

  sql脚本代码如下:
  

E_ID E_Name  
01 Adams, John
  
02 Bush, George
  
03 Carter, Thomas
  
04 Gates, Bill
  

  使用 UNION 命令实例
  
列出所有在中国和美国的不同的雇员名:
  
sql脚本代码如下:
  

SELECT E_Name FROM Employees_China  
UNION
  
SELECT E_Name FROM Employees_USA
  

  结果:
  
sql脚本代码如下:
  

E_Name  
Zhang, Hua
  
Wang, Wei
  
Carter, Thomas
  
Yang, Ming
  
Adams, John
  
Bush, George
  
Gates, Bill
  

  注释:这个命令无法列出在中国和美国的所有雇员。在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了。UNION 命令只会选取不同的值。
  
使用 UNION ALL 命令实例
  
UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。
  
sql脚本代码如下:
  

SQL Statement 1  
UNION ALL
  
SQL Statement 2
  

  实例:
  
列出在中国和美国的所有的雇员:
  
sql脚本代码如下:
  

SELECT E_Name FROM Employees_China  
UNION ALL
  
SELECT E_Name FROM Employees_USA
  

  

  结果
  
sql脚本代码如下:
  

E_Name  
Zhang, Hua
  
Wang, Wei
  
Carter, Thomas
  
Yang, Ming
  
Adams, John
  
Bush, George
  
Carter, Thomas
  
Gates, Bill
  

  

  文档来源:Mysql联合查询union和union all的使用介绍

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-423126-1-1.html 上篇帖子: 吾生也有涯,而知也无涯 下篇帖子: MySql 笔试题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表