UNION ALL
合并查询结果并保留重复。
简介
UNION ALL 纵向合并多段查询并保留所有记录,包括重复行。它不执行去重,通常比 UNION 更直接,也更适合合并分区、月份或来源不同但允许重复的数据。列数和对应类型仍必须兼容;如果结果出现重复,应先确认这是业务事实还是上游查询自身重复。
基础语法
SELECT name FROM customers UNION ALL SELECT name FROM suppliers;
示例
UNION ALL 示例
合并 customers 与 suppliers 的名称并保留重复值,便于与 UNION 的去重结果直接比较。
示例数据表
表名:
customers| name |
|---|
| Alice |
| Bob |
| Cindy |
表名:
suppliers| name |
|---|
| Alpha |
| Beta |
| Alice |
运行结果
| name |
|---|
| Alice |
| Bob |
| Cindy |
| Alpha |
| Beta |
| Alice |
常见问题
两段 SELECT 的列数可以不同吗?
不可以。对应位置必须有相同数量且类型可兼容的结果列。
UNION 为什么可能比较慢?
UNION 需要去重;确认允许重复时,UNION ALL 通常更直接。
ORDER BY 应该放在哪一段?
对最终合并结果排序时,ORDER BY 通常写在整个集合查询的末尾。
标签
这篇内容是否清楚?
感谢反馈,我们会把它用于后续内容复核。