1. UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集
UNION 内部的 SELECT 语句必须拥有相同数量的列
列必须拥有相似的数据类型
每条 SELECT 语句中的列的顺序必须相同
1.2 UNION vs UNION ALL
MySQL 中的 UNION 和 UNION ALL 用于合并多个 SELECT 查询的结果集,前者会去除重复行,后者则保留所有行
2. UNION
- UNION 会自动去掉重复的行
SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;
每个 SELECT 语句必须返回相同数量的列(比如 column1, column2, ... ),并且对应列的数据类型必须兼容
3. UNION ALL
- UNION ALL 会保留所有行(包括重复行)
SELECT column1, column2, ...
FROM table1
WHERE condition1
UNION ALL
SELECT column1, column2, ...
FROM table2
WHERE condition2;
3.2 通用条件筛选
如果有通用的筛选条件适用于所有 SELECT 语句,可以考虑将其置于外部的 WHERE 子句中
SELECT * FROM (
SELECT column1, column2, ...
FROM table1
WHERE condition1
UNION ALL
SELECT column1, column2, ...
FROM table2
WHERE condition2
) AS combined_results
WHERE additional_condition; -- 对合并后的结果集应用其他条件