合并查询结果 === 有时候一个查询语句无法满足需求,需要把两个或多个查询结果合并在一起。这时就可以使用 `UNION` 或 `UNION ALL`。 ### UNION关键字 `UNION` 用于合并多个 `SELECT` 查询结果,并自动去重。 基本语法如下: ```sql SELECT 字段列表 FROM 表1 UNION SELECT 字段列表 FROM 表2; ``` 例如: ```sql SELECT name FROM employee_china UNION SELECT name FROM employee_usa; ``` 这表示把两张表中的员工姓名合并成一个结果集,并去掉重复值。 使用 `UNION` 时要注意: 1. 多个 `SELECT` 返回的列数必须一致 2. 对应列的数据类型应该兼容 3. 默认会做去重处理 ### UNION ALL关键字 `UNION ALL` 和 `UNION` 类似,但不会去重。 例如: ```sql SELECT name FROM employee_china UNION ALL SELECT name FROM employee_usa; ``` 如果同一个名字在两张表中都存在,`UNION ALL` 会保留两条记录。 它的特点是: - 不做去重 - 性能通常比 `UNION` 更高 - 适合明确需要保留重复数据的场景 例如查询两张日志表的所有记录: ```sql SELECT id, created_at FROM log_2025 UNION ALL SELECT id, created_at FROM log_2026; ``` ### 小结 `UNION` 用于合并结果并去重,`UNION ALL` 用于合并结果但保留重复数据。是否去重,是它们最核心的区别。