Skip to content

SQL UNION

SQL UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

语法

sql
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

UNION ALL

如果要包含重复的记录,可以使用 UNION ALL 操作符:

sql
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

注意事项

  1. 列数必须相同:UNION 操作符要求两个 SELECT 语句返回的列数相同。

  2. 列的数据类型必须兼容:UNION 操作符要求两个 SELECT 语句返回的对应列的数据类型兼容。

  3. 列名:UNION 操作符使用第一个 SELECT 语句的列名作为结果集的列名。

  4. 排序:默认情况下,UNION 操作符会对结果集进行排序,而 UNION ALL 不会。

示例

假设我们有以下两个表:

students 表

idnameagegrade
1张三18高三
2李四17高二
3王五19高三

teachers 表

idnameagedepartment
1王老师35数学
2李老师40语文
3张老师30英语

示例 1:使用 UNION 合并两个表的数据

sql
SELECT name, age FROM students
UNION
SELECT name, age FROM teachers;

结果:

nameage
张三18
李四17
王五19
王老师35
李老师40
张老师30

示例 2:使用 UNION ALL 合并两个表的数据(包含重复值)

假设我们有一个名为 students2 的表,与 students 表数据相同:

sql
SELECT name, age FROM students
UNION ALL
SELECT name, age FROM students2;

结果:

nameage
张三18
李四17
王五19
张三18
李四17
王五19

示例 3:使用 UNION 合并不同表的相似数据

sql
SELECT name, age, '学生' AS type FROM students
UNION
SELECT name, age, '老师' AS type FROM teachers;

结果:

nameagetype
张三18学生
李四17学生
王五19学生
王老师35老师
李老师40老师
张老师30老师

小结

SQL UNION 操作符是一种用于合并多个 SELECT 语句结果集的有效方法。它可以帮助我们从不同的表中获取相关数据,并将它们合并为一个结果集。需要注意的是,UNION 会自动去除重复记录,而 UNION ALL 会保留所有记录。