有时候一个查询语句无法满足需求,需要把两个或多个查询结果合并在一起。这时就可以使用 UNION 或 UNION ALL。
UNION 用于合并多个 SELECT 查询结果,并自动去重。
基本语法如下:
SELECT 字段列表 FROM 表1
UNION
SELECT 字段列表 FROM 表2;
例如:
SELECT name
FROM employee_china
UNION
SELECT name
FROM employee_usa;
这表示把两张表中的员工姓名合并成一个结果集,并去掉重复值。
使用 UNION 时要注意:
SELECT 返回的列数必须一致UNION ALL 和 UNION 类似,但不会去重。
例如:
SELECT name
FROM employee_china
UNION ALL
SELECT name
FROM employee_usa;
如果同一个名字在两张表中都存在,UNION ALL 会保留两条记录。
它的特点是:
UNION 更高例如查询两张日志表的所有记录:
SELECT id, created_at
FROM log_2025
UNION ALL
SELECT id, created_at
FROM log_2026;
UNION 用于合并结果并去重,UNION ALL 用于合并结果但保留重复数据。是否去重,是它们最核心的区别。