日期:2024年9月3日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006
文章目录
- 一、前言
- 二、`UNION`:去除重复,保留唯一
- 1、基本语法
- 2、代码示例
- 三、`UNION ALL`:合并所有,保留全部
- 1、基本语法
- 2、代码示例
- 四、注意事项
- 五、结语

一、前言
在数据库查询中,UNION 与 UNION ALL 是两个至关重要的操作符,它们用于合并多个 SELECT 语句的结果集,为数据的整合与分析提供了强大的工具。本文将通过实例深入探讨这两个操作符在 SQL Server、Access 以及 SQLite 中的用法,帮助你从理论到实践,全面掌握其应用技巧。
二、UNION:去除重复,保留唯一
UNION 操作符用于合并两个或多个 SELECT 语句的结果集,同时自动去除其中的重复行,确保每一条记录的唯一性。这意味着即使多个 SELECT 语句中含有相同的数据行,UNION 也会确保结果集中不出现重复。
1、基本语法
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
其中 column_name(s) 表示列名(字段),可以是一个,也可以很多个。重要的是,所有选择列表中的列数必须相同,对应的列必须具有兼容的数据类型,列的顺序必须相同。
2、代码示例
假设我们有两个表 Employees 和 Contractors,它们都有 Name 和 Salary 字段。
SQL Server、Access 以及 SQLite 示例如下所示:
SELECT Name, Salary FROM Employees
UNION
SELECT Name, Salary FROM Contractors;
若按 Salary 字段从大到小排序,则:
SELECT Name, Salary FROM Employees
UNION
SELECT Name, Salary FROM Contractors;
ORDER BY Salary DESC
示例数据:
Employees:
Name | Salary |
|---|---|
| 张三 | 10000 |
| 李四 | 9000 |
| 王五 | 11000 |
Contractors:
Name | Salary |
|---|---|
| 李四 | 9000 |
| 王五 | 11000 |
| 赵六 | 12000 |
运行上述UNION命令后,结果将去除重复的记录,仅保留唯一值。
Name | Salary |
|---|---|
| 张三 | 10000 |
| 李四 | 9000 |
| 王五 | 11000 |
| 赵六 | 12000 |
排序后
Name | Salary |
|---|---|
| 赵六 | 12000 |
| 王五 | 11000 |
| 张三 | 10000 |
| 李四 | 9000 |
三、UNION ALL:合并所有,保留全部
与 UNION 不同,UNION ALL 保留所有的行,包括重复的行。这意味着,如果多个 SELECT 语句中存在重复的数据,UNION ALL 会将这些行全部保留,不进行任何去重操作。
1、基本语法
SELECT column_name(s) FROM table1
UNION All
SELECT column_name(s) FROM table2;
其中 column_name(s) 表示列名(字段),可以是一个,也可以很多个。重要的是,所有选择列表中的列数必须相同,对应的列必须具有兼容的数据类型,列的顺序必须相同。
2、代码示例
假设我们有两个表 Employees 和 Contractors,它们都有 Name 和 Salary 字段。
SQL Server、Access 以及 SQLite 示例如下所示:
SELECT Name, Salary FROM Employees
UNION ALL
SELECT Name, Salary FROM Contractors;
若按 Salary 字段从大到小排序,则:
SELECT Name, Salary FROM Employees
UNION ALL
SELECT Name, Salary FROM Contractors;
ORDER BY Salary DESC
示例数据:
Employees:
Name | Salary |
|---|---|
| 张三 | 10000 |
| 李四 | 9000 |
| 王五 | 11000 |
Contractors:
Name | Salary |
|---|---|
| 李四 | 9000 |
| 王五 | 11000 |
| 赵六 | 12000 |
运行上述UNION命令后,结果将去除重复的记录,仅保留唯一值。
Name | Salary |
|---|---|
| 张三 | 10000 |
| 李四 | 9000 |
| 王五 | 11000 |
| 李四 | 9000 |
| 王五 | 11000 |
| 赵六 | 12000 |
排序后
Name | Salary |
|---|---|
| 赵六 | 12000 |
| 王五 | 11000 |
| 王五 | 11000 |
| 张三 | 10000 |
| 李四 | 9000 |
| 李四 | 9000 |
四、注意事项
UNION操作符默认去除重复的记录。如果需要包含重复记录,可以使用UNION ALL。UNION通常会比UNION ALL执行得慢,因为它需要额外的步骤来去除重复的行。UNION的结果集默认会进行排序,而UNION ALL不会。- 所有选择列表中的列数必须相同,对应的列必须具有兼容的数据类型,列的顺序必须相同。
- 在性能方面,对于大型数据库,
SQL Server通常比Access和SQLite更优。 - 在兼容性方面,
SQLite由于其轻量级特性,可能在某些特定环境下更受欢迎,尤其是在移动设备和嵌入式系统中。
五、结语
无论是 SQL Server 的专业级应用,Access 的桌面级处理,还是 SQLite 的轻量级需求,UNION 和 UNION ALL 都是数据整合中的得力助手。选择哪个操作符,取决于你对数据重复性的需求。当数据的唯一性比完整性和效率更重要时,UNION 是你的首选;反之,如果数据完整性和效率至上,UNION ALL 更能胜任。
参考文章:
- 《SQL UNION 操作符》
- 《SQLite Unions 子句》
版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/141676192



















