SQL UNION

2024 年 8 月 29 日 | 4 分钟阅读

UNION 是一个 SQL 运算符,它将两个或多个 SELECT 查询的结果合并起来,并在输出中提供一个单一的结果集。

SQL 中 UNION 的语法

所有与 UNION 运算符连接的 SELECT 语句的数据类型和字段数必须相同。数据库系统使用 UNION 运算符来删除合并结果集中的重复值。

SQL 中 UNION 运算符的示例

让我们创建两个不同的表并将记录插入这两个表中。

以下查询创建了带有四个字段的 **Old_Employee** 表

以下查询创建了带有四个字段的 **New_Employee** 表

以下 INSERT 查询将旧员工的记录插入 Old_Employee 表

以下查询显示了 **Old_Employee** 表的详细信息


Employee_Id(员工编号)Employee_NameEmp_AgeEmp_Salary
101阿希尔 (Akhil)2825000
102Abhay2726000
103Sorya2629000
104Abhishek2726000
105Ritik2629000
106Yash2928000

表: Old_Employee

以下 INSERT 查询将新员工的记录插入 **New_Employee** 表

以下查询显示了 **New_Employee** 表的详细信息


员工 IDEmp_NameEmp_SalaryEmp_City
201杰克2845000
202Berry2935000
105Ritik2629000
203Shyam2726000
204Ritika2838000
106Yash2928000

表: New_Employee

以下查询使用 UNION 运算符在一张表中显示两个表的全部记录

输出

Employee_Id(员工编号)Employee_NameEmp_AgeEmp_Salary
101阿希尔 (Akhil)2825000
102Abhay2726000
103Sorya2629000
104Abhishek2726000
105Ritik2629000
106Yash2928000
201杰克2845000
202Berry2935000
203Shyam2726000
204Ritika2838000

UNION 运算符与 WHERE 子句

WHERE 子句也可以与 UNION 运算符一起使用,以过滤一个或两个表中的记录。

带 WHERE 子句的 UNION 语法

带 WHERE 子句的 UNION 示例

以下查询显示了上面表中薪水大于等于 29000 的员工记录

输出

Employee_Id(员工编号)Employee_NameEmp_AgeEmp_Salary
103Sorya2629000
105Ritik2629000
201杰克2845000
202Berry2935000
204Ritika2838000

SQL 中的 Union ALL 运算符

SQL Union ALL 运算符与 UNION 运算符相同,唯一的区别是 UNION ALL 运算符在结果中也显示公共行。

UNION ALL 集合运算符语法

UNION ALL 示例

让我们创建两个不同的表并将记录插入这两个表中。

以下查询创建了带有四个字段的 **Passed_Students** 表

以下查询创建了带有四个字段的 **New_Students** 表

以下 INSERT 查询将通过考试的学生的记录插入 Passed_Students 表

以下查询显示了 Passed_Students 表的详细信息


Student_Id学生姓名Student_Age学生分数
101阿希尔 (Akhil)2895
102Abhay2786
103Sorya2679
104Abhishek2766
105Ritik2679
106Yash2988

表: Passed_Students

以下 INSERT 查询将新生的记录插入 New_Students 表

以下查询显示了 **New_Students** 表的详细信息


Student_Id学生姓名Student_Age学生分数
201杰克2877
202Berry2966
105Ritik2682
203Shyam2770
204Ritika2899
106Yash2986

表: New_Students

以下查询显示了两个表的所有重复和唯一记录

输出

Student_Id学生姓名Student_Age学生分数
101阿希尔 (Akhil)2895
102Abhay2786
103Sorya2679
104Abhishek2766
105Ritik2679
106Yash2988
201杰克2877
202Berry2968
105Ritik2682
203Shyam2770
204Ritika2899
106Yash2986