在SQL中,`UNION` 是一个用于合并两个或多个 `SELECT` 语句结果集的操作符。使用 `UNION` 时,结果集会去重,只包含唯一的行。如果保留重复的行,可以使用 `UNION ALL`。
以下是 `UNION` 的一些关键点:
1. 去重:`UNION` 默认会合并结果集,并去除重复的行。这意味着如果两个结果集中有相同的行,那么在最终的合并结果中只会出现一次。
2. 列数相同:使用 `UNION` 的每个 `SELECT` 语句必须具有相同数量的列。
3. 数据类型兼容:每个 `SELECT` 语句中的相应列必须具有兼容的数据类型。例如,如果第一个查询的某一列是整数类型,那么第二个查询的对应列也必须是整数类型。
4. 排序:`UNION` 本身不会对结果集进行排序,如果需要排序,可以使用 `ORDER BY` 子句。
5. 效率:`UNION ALL` 通常比 `UNION` 快,因为它不执行额外的去重操作。
示例
假设有两个表 `employees` 和 `managers`,它们都包含员工的ID和姓名,我们想要获取所有员工和经理的列表:
SELECT employee_id, name FROM employees
UNION
SELECT manager_id, name FROM managers;
这个查询会返回一个列表,其中包含了 `employees` 表和 `managers` 表中所有不重复的ID和姓名。
如果允许重复,可以使用 `UNION ALL`:
SELECT employee_id, name FROM employees
UNION ALL
SELECT manager_id, name FROM managers;
这个查询会返回所有记录,包括重复项。
使用 `UNION` 或 `UNION ALL` 可以有效地将多个查询的结果集合并成一个单一的结果集,这在需要从多个表或视图中检索数据时非常有用。