mybatis的使用技巧8——联合查询union和union all的区别和用法

在实际项目开发中,会经常联合查询结构相似的多张数据表,使用union关键字就只需要一次sql操作,而无需执行多次查询并通过代码逻辑合并处理,减少了大量繁琐的操作,最重要的是还能通过可选的all关键字筛选重复的数据。

1.union和union all区别

  • 相同点:两者都用于把来自多个select语句的结果组合到一个结果集合中。
  • 不同点:当使用union时,mysql会把结果集中重复的记录删掉,而使用union all ,mysql会把所有的记录返回,且效率高于union。

最终的查询结果对比:

2.union和union all用法

重要的注意事项:

  • 第一个select语句中被使用的字段名称会被用于最终结果集的字段名称。
  • 存在union关键字的sql语句仅属于一条完整的sql,因此每一个select语句结束后都不能写标点符号。
  • 在多个 SELECT 语句中,对应的列应该具有相同的字段属性且同时字段的顺序要保持一致。
  • 如果子句中有order by,limit,需用括号()包起来。推荐放到所有子句之后,即对最终合并的结果来排序或筛选。

具体的写法如下:

sql 复制代码
-- union
select id,logo_sn sn
from card_info 
where del_flag = '0'
and id in (57,72)
union 
select helmet_id id,helmet_sn sn
from use_log
where del_flag = '0'
and helmet_id in (57,72)

-- union all
select id,logo_sn sn
from card_info 
where del_flag = '0'
and id in (57,72)
union all 
select helmet_id id,helmet_sn sn
from use_log
where del_flag = '0'
and helmet_id in (57,72)
相关推荐
2301_779622411 分钟前
如何自动计算SQL税费信息_利用触发器实时扣算税额
jvm·数据库·python
weixin_444012931 分钟前
mysql在高并发环境下的读写分离与负载均衡
jvm·数据库·python
2401_824697661 分钟前
如何通过phpMyAdmin给WordPress所有用户发送全站通知_系统表插入
jvm·数据库·python
CLX05053 分钟前
如何管理Oracle服务器的内核共享内存_shmmax与shmall计算
jvm·数据库·python
夕除4 分钟前
spring boot 4
java·spring boot·后端
云边有个稻草人5 分钟前
端边云一体化时序数据管理:数据库选型与技术实现
数据库·端边云时序数据方案·工业物联网时序数据库·开源时序数据库选型·高压缩时序存储技术·时序数据库选型指南·tsfile 存储引擎技术
2301_812539675 分钟前
golang如何实现备忘录模式_golang备忘录模式实现方案
jvm·数据库·python
weipt5 分钟前
国产数据库私有化部署实战:PolarDB for PostgreSQL 免费容器版踩坑记
数据库·postgresql
woxihuan1234568 分钟前
HTML怎么构建课程学习仪表盘_HTML进度环+任务列表【教程】
jvm·数据库·python
三产9 分钟前
Hermes 教程 03:Skills 系统
android·java·数据库