Appearance
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;注意事项
列数必须相同:UNION 操作符要求两个 SELECT 语句返回的列数相同。
列的数据类型必须兼容:UNION 操作符要求两个 SELECT 语句返回的对应列的数据类型兼容。
列名:UNION 操作符使用第一个 SELECT 语句的列名作为结果集的列名。
排序:默认情况下,UNION 操作符会对结果集进行排序,而 UNION ALL 不会。
示例
假设我们有以下两个表:
students 表
| id | name | age | grade |
|---|---|---|---|
| 1 | 张三 | 18 | 高三 |
| 2 | 李四 | 17 | 高二 |
| 3 | 王五 | 19 | 高三 |
teachers 表
| id | name | age | department |
|---|---|---|---|
| 1 | 王老师 | 35 | 数学 |
| 2 | 李老师 | 40 | 语文 |
| 3 | 张老师 | 30 | 英语 |
示例 1:使用 UNION 合并两个表的数据
sql
SELECT name, age FROM students
UNION
SELECT name, age FROM teachers;结果:
| name | age |
|---|---|
| 张三 | 18 |
| 李四 | 17 |
| 王五 | 19 |
| 王老师 | 35 |
| 李老师 | 40 |
| 张老师 | 30 |
示例 2:使用 UNION ALL 合并两个表的数据(包含重复值)
假设我们有一个名为 students2 的表,与 students 表数据相同:
sql
SELECT name, age FROM students
UNION ALL
SELECT name, age FROM students2;结果:
| name | age |
|---|---|
| 张三 | 18 |
| 李四 | 17 |
| 王五 | 19 |
| 张三 | 18 |
| 李四 | 17 |
| 王五 | 19 |
示例 3:使用 UNION 合并不同表的相似数据
sql
SELECT name, age, '学生' AS type FROM students
UNION
SELECT name, age, '老师' AS type FROM teachers;结果:
| name | age | type |
|---|---|---|
| 张三 | 18 | 学生 |
| 李四 | 17 | 学生 |
| 王五 | 19 | 学生 |
| 王老师 | 35 | 老师 |
| 李老师 | 40 | 老师 |
| 张老师 | 30 | 老师 |
小结
SQL UNION 操作符是一种用于合并多个 SELECT 语句结果集的有效方法。它可以帮助我们从不同的表中获取相关数据,并将它们合并为一个结果集。需要注意的是,UNION 会自动去除重复记录,而 UNION ALL 会保留所有记录。