UNION
合并查询结果并去重。
简介
UNION 把多段 SELECT 的结果纵向合并,并对完整结果行去重。每段查询必须返回相同数量的列,对应位置的数据类型也应兼容;最终列名通常由第一段 SELECT 决定。去重需要额外工作,如果业务允许保留重复记录,应优先考虑 UNION ALL。
基础语法
SELECT name FROM customers UNION SELECT name FROM suppliers;
示例
UNION 示例
合并 customers 与 suppliers 的 name,并观察两个来源中相同的名称只保留一行。
示例数据表
表名:
customers| name |
|---|
| Alice |
| Bob |
| Cindy |
表名:
suppliers| name |
|---|
| Alpha |
| Beta |
| Alice |
运行结果
| name |
|---|
| Alice |
| Alpha |
| Beta |
| Bob |
| Cindy |
常见问题
两段 SELECT 的列数可以不同吗?
不可以。对应位置必须有相同数量且类型可兼容的结果列。
UNION 为什么可能比较慢?
UNION 需要去重;确认允许重复时,UNION ALL 通常更直接。
ORDER BY 应该放在哪一段?
对最终合并结果排序时,ORDER BY 通常写在整个集合查询的末尾。
标签
这篇内容是否清楚?
感谢反馈,我们会把它用于后续内容复核。