SQLPathLab
集合运算 · 进阶

UNION

合并查询结果并去重。

简介

UNION 把多段 SELECT 的结果纵向合并,并对完整结果行去重。每段查询必须返回相同数量的列,对应位置的数据类型也应兼容;最终列名通常由第一段 SELECT 决定。去重需要额外工作,如果业务允许保留重复记录,应优先考虑 UNION ALL。

基础语法

SELECT name FROM customers UNION SELECT name FROM suppliers;

示例

UNION 示例

合并 customers 与 suppliers 的 name,并观察两个来源中相同的名称只保留一行。

示例数据表

表名:customers
customers
name
Alice
Bob
Cindy
表名:suppliers
suppliers
name
Alpha
Beta
Alice

运行结果

result
name
Alice
Alpha
Beta
Bob
Cindy

常见问题

两段 SELECT 的列数可以不同吗?

不可以。对应位置必须有相同数量且类型可兼容的结果列。

UNION 为什么可能比较慢?

UNION 需要去重;确认允许重复时,UNION ALL 通常更直接。

ORDER BY 应该放在哪一段?

对最终合并结果排序时,ORDER BY 通常写在整个集合查询的末尾。

标签

过滤数据

这篇内容是否清楚?