UNION用于合并多个SELECT结果并去重,UNION ALL保留重复行;要求列数相同、数据类型兼容,列名取自第一个查询。
UNION 是 MySQL 中用于合并两个或多个 SELECT 查询结果集的操作符。它会把多个查询返回的行组合成一个结果集,并自动去除重复的行。
基本语法
SELECT 列名 FROM 表1 UNION SELECT 列名 FROM 表2;使用 UNION 时,有几个关键要求:
- 每个 SELECT 语句中的列数量必须相同
- 对应列的数据类型需要兼容
- 结果集的列名来自第一个 SELECT 语句
UNION 与 UNION ALL 的区别
默认的 UNION 会去重,而 UNION ALL 保留所有行(包括重复)。
- UNION:自动删除重复记录,性能稍慢
- UNION
ALL:不检查重复,速度快,适合确定无重复或需要保留重复的场景
使用示例
假设有两个表:students 和 teachers,都有 name 字段:
SELECT name FROM students UNION SELECT name FROM teachers;这条语句会列出所有学生和教师的名字,相同名字只出现一次。
如果改用:
SELECT name FROM students UNION ALL SELECT name FROM teachers;那么即使名字重复,也会全部显示出来。
基本上就这些,UNION 是处理多表数据合并时非常实用的工具,注意结构一致性和是否需要去重就行。

ALL:不检查重复,速度快,适合确定无重复或需要保留重复的场景





