【SQL系列】合并多个行集

简介: 【SQL系列】合并多个行集

问题

你想返回存储在多张表中的数据,即将多个结果集合并。这些表并非必须有相同的键,但它们的列的数据类型必须相同。例如,你想显示 EMP 表中部门编号为 20 的员工的姓名和部门编号,以及 DEPT 表中每个部门的名称和编号。

解决方案

使用集合运算 UNION ALL 合并来自多张表的行。

select name as name_and_dname, deptno

from emp

where deptno = 20

union all

select dname, deptno

from dept

扩展

UNION ALL 可以将来自多个数据源的行合并为一个结果集。与所有的集合运算一样,在 SELECT 子句中指定的列的数量和类型必须匹配。

需要指出的是,UNION ALL 不会剔除重复的行。要剔除重复的行,可以使用运算符 UNION。

使用 UNION(而不是 UNION ALL)时,很可能引发排序操作以消除重复的行。处理大型结果集时,务必牢记这一点。

除非必要,否则不要在查询中使用 DISTINCT。这条规则也适用于 UNION:除非必要,否则不要使用 UNION,而应该使用 UNION ALL。


点个赞吧,这对我非常重要!

目录
打赏
0
0
0
0
169
分享
相关文章
|
9月前
|
【SQL】已解决:SQL分组去重并合并相同数据
【SQL】已解决:SQL分组去重并合并相同数据
179 1
|
9月前
|
SQL
云架构数据倾斜问题之在SQL数据源读取查询时合并小文件如何解决
云架构数据倾斜问题之在SQL数据源读取查询时合并小文件如何解决
SQL 能力问题之合并两个存在交叉的日期区间,如何解决
SQL 能力问题之合并两个存在交叉的日期区间,如何解决
使用Flink SQL实现对连续的异常告警进行合并
使用Flink SQL实现对连续的异常告警进行合并
388 40
sql语句两个字段合并或者两个字段拼接显示
sql语句两个字段合并或者两个字段拼接显示
120 0
|
11月前
|
SQL JOIN 子句:合并多个表中相关行的完整指南
SQL LEFT JOIN关键字返回左表(table1)中的所有记录以及右表(table2)中的匹配记录。如果没有匹配,则右侧的结果为0条记录。
398 0
一条集多表查询、字段与字段拼接、合并每张表共同字段、新增列并赋值的SQL
一条集多表查询、字段与字段拼接、合并每张表共同字段、新增列并赋值的SQL
97 0
【SQL系列】合并多个行集
【SQL系列】合并多个行集
249 0
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")

热门文章

最新文章