微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mysql常用sql语句18- union 全连接

测试必备的MysqL常用sql语句系列

https://www.cnblogs.com/poloyy/category/1683347.html

 

前言

 

union 的语法格式

[sql1]
UNION ALL | disTINCT]
sql2sql3]
....

语法格式说明

  • sql1、sql2、sql3:平时写的查询 sql,可以连接很多条 sql
  • ALL:可选参数,返回所有结果集,包含重复数据
  • distinct:可选参数,删除结果集中重复的数据(认只写 union 也会删除重复数据,所以不加也没事)

 

先看看dept、emp表有什么数据

dept表

emp表

 

union all 的栗子

select * from emp as a left join dept as b on a.dept_id = b.id
union all
right = b.id;

蓝色圈子:第一条 sql查询结果

红色圈子:第二条 sql查询结果

 

union 的栗子

union
= b.id;

上图是去重之后的结果,而没有去重的结果可以看union all 的栗子或者下图

红色圈住的部分就是重复的数据,union 会进行去重,只保留一份数据

知识点(重点)

  • 使用 union 连接的多条sql,每个 sql 查询出来的结果集的字段名称要一致【只需要名称一致即可,顺序可以不同,但建议相同】,可以看看下面的栗子

  • 最终 union 连接查询的结果集的字段顺序会以第一个 sql 查出来结果集的字段顺序为基准

union 连接的两条 sql ,各自指定的字段顺序不相同的栗子

select name,id,leader,is_enable,dept_id where dept_id = 1
*  where leader 0

从上图可以看出,第二条 sql 查出来的字段顺序和最终结果集字段顺序明显不一样,导致数据错乱的问题

所以!!union 连接的每条 sql 指定的字段顺序最好一致!!

所以!!union 连接的每条 sql 指定的字段顺序最好一致!!

所以!!union 连接的每条 sql 指定的字段顺序最好一致!!

select id,name,dept_id,is_enable   0

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐