首页/数据/数据库速查/UNION 与 UNION ALL 集合运算
本包目录(495 条)
MySQL 基础与连接36 条
SQL 语法52 条
用户与权限21 条备份与恢复56 条主从复制与高可用53 条性能与调优57 条Redis 命令96 条Redis 运维与场景124 条

UNION 与 UNION ALL 集合运算

纵向拼接两个结果集:UNION 去重(有排序成本)、UNION ALL 保留全部(默认首选);列数类型必须兼容。

数据库速查数据更新于 2026-10-12
用途结果集纵向合并
语法SELECT … UNION [ALL] SELECT …
差异UNION 去重,UNION ALL 不去重

用法示例

用法示例
SELECT id, 'order' AS src FROM orders WHERE created_at >= CURDATE()
UNION ALL
SELECT id, 'refund' AS src FROM refunds WHERE created_at >= CURDATE();

排序位置

排序位置
(SELECT id FROM t1 LIMIT 10)
UNION ALL
(SELECT id FROM t2 LIMIT 10)
ORDER BY id DESC LIMIT 20;
UNION 去重会对合并结果做唯一化(可能用临时表),能接受重复建议一律用 UNION ALL。

易错点

  • ORDER BY 与 LIMIT 作用于整个 UNION 结果,对单个分支限制要加括号
  • 各分支列名以第一个 SELECT 为准,列类型不一致会隐式转换

数据来源与参考

  • MySQL 8.0 Reference Manual: UNION Clause

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌