SQLPathLab
集合运算 · 进阶

UNION ALL

合并查询结果并保留重复。

简介

UNION ALL 纵向合并多段查询并保留所有记录,包括重复行。它不执行去重,通常比 UNION 更直接,也更适合合并分区、月份或来源不同但允许重复的数据。列数和对应类型仍必须兼容;如果结果出现重复,应先确认这是业务事实还是上游查询自身重复。

基础语法

SELECT name FROM customers UNION ALL SELECT name FROM suppliers;

示例

UNION ALL 示例

合并 customers 与 suppliers 的名称并保留重复值,便于与 UNION 的去重结果直接比较。

示例数据表

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

运行结果

result
name
Alice
Bob
Cindy
Alpha
Beta
Alice

常见问题

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

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

UNION 为什么可能比较慢?

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

ORDER BY 应该放在哪一段?

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

标签

过滤数据

这篇内容是否清楚?