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)
相关推荐
独自归家的兔2 分钟前
通义千问3-VL-Plus - 界面交互(坐标改进)
数据库·microsoft·交互
重生之我是Java开发战士3 分钟前
【数据结构】优先级队列(堆)
java·数据结构·算法
菜鸟233号3 分钟前
力扣216 组合总和III java实现
java·数据结构·算法·leetcode
dodod20127 分钟前
Ubuntu24.04.3执行sudo apt install yarnpkg 命令失败的原因
java·服务器·前端
Evan芙8 分钟前
搭建 LNMT 架构并配置 Tomcat 日志管理与自动备份
java·架构·tomcat
青云交9 分钟前
Java 大视界 -- Java+Spark 构建企业级用户画像平台:从数据采集到标签输出全流程(437)
java·开发语言·spark·hbase 优化·企业级用户画像·标签计算·高并发查询
p&f°10 分钟前
PostgreSQL 执行计划控制参数详解
数据库·postgresql·oracle
航Hang*11 分钟前
第3章:复习篇——第1节:创建和管理数据库
开发语言·数据库·笔记·sql·sqlserver
铉铉这波能秀14 分钟前
正则表达式从入门到精通(字符串模式匹配)
java·数据库·python·sql·正则表达式·模式匹配·表格处理
sc.溯琛15 分钟前
MySQL 进阶实验:数据库与数据表管理完全指南
数据库·oracle