当前位置: 首页 > article >正文

【数据库|第11期】深入掌握 SQL Server、Access 与 SQLite 中的 `UNION` 与 `UNION ALL`:从理论到实践

日期: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、代码示例
  • 四、注意事项
  • 五、结语


在这里插入图片描述


一、前言


在数据库查询中,UNIONUNION ALL 是两个至关重要的操作符,它们用于合并多个 SELECT 语句的结果集,为数据的整合与分析提供了强大的工具。本文将通过实例深入探讨这两个操作符在 SQL ServerAccess 以及 SQLite 中的用法,帮助你从理论到实践,全面掌握其应用技巧。

二、UNION:去除重复,保留唯一


UNION 操作符用于合并两个或多个 SELECT 语句的结果集,同时自动去除其中的重复行,确保每一条记录的唯一性。这意味着即使多个 SELECT 语句中含有相同的数据行,UNION 也会确保结果集中不出现重复。

1、基本语法

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

其中 column_name(s) 表示列名(字段),可以是一个,也可以很多个。重要的是,所有选择列表中的列数必须相同,对应的列必须具有兼容的数据类型,列的顺序必须相同

2、代码示例

假设我们有两个表 EmployeesContractors,它们都有 NameSalary 字段。

SQL ServerAccess 以及 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:

NameSalary
张三10000
李四9000
王五11000

Contractors:

NameSalary
李四9000
王五11000
赵六12000

运行上述UNION命令后,结果将去除重复的记录,仅保留唯一值。

NameSalary
张三10000
李四9000
王五11000
赵六12000

排序后

NameSalary
赵六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、代码示例

假设我们有两个表 EmployeesContractors,它们都有 NameSalary 字段。

SQL ServerAccess 以及 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:

NameSalary
张三10000
李四9000
王五11000

Contractors:

NameSalary
李四9000
王五11000
赵六12000

运行上述UNION命令后,结果将去除重复的记录,仅保留唯一值。

NameSalary
张三10000
李四9000
王五11000
李四9000
王五11000
赵六12000

排序后

NameSalary
赵六12000
王五11000
王五11000
张三10000
李四9000
李四9000

四、注意事项

  • UNION 操作符默认去除重复的记录。如果需要包含重复记录,可以使用 UNION ALL
  • UNION 通常会比 UNION ALL 执行得慢,因为它需要额外的步骤来去除重复的行。
  • UNION 的结果集默认会进行排序,而 UNION ALL 不会。
  • 所有选择列表中的列数必须相同,对应的列必须具有兼容的数据类型,列的顺序必须相同
  • 在性能方面,对于大型数据库,SQL Server 通常比 AccessSQLite 更优。
  • 在兼容性方面,SQLite 由于其轻量级特性,可能在某些特定环境下更受欢迎,尤其是在移动设备和嵌入式系统中。

五、结语


无论是 SQL Server 的专业级应用,Access 的桌面级处理,还是 SQLite 的轻量级需求,UNIONUNION ALL 都是数据整合中的得力助手。选择哪个操作符,取决于你对数据重复性的需求。当数据的唯一性比完整性和效率更重要时,UNION 是你的首选;反之,如果数据完整性和效率至上,UNION ALL 更能胜任。


参考文章:

  • 《SQL UNION 操作符》
  • 《SQLite Unions 子句》

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/141676192


http://www.kler.cn/news/288868.html

相关文章:

  • windows系统安装配置Apache Maven
  • React16新手教程记录
  • org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
  • 晋升路上的梦想之光,社科院与杜兰大学金融管理硕士助力你前行
  • 数造科技荣登“科创杯”领奖台,开启数据驱动新篇章!
  • HarmonyOS实战开发:NAPI接口规范开发
  • Centos根目录扩容Docker分区扩容最佳实践
  • 【网络安全】Collabora在线存储型XSS(CVE-2024-29182)+代码审计
  • OpenCV 图像处理应用实战算法列表汇总(长期更新)
  • Redis安装+常用命令合集大全+Redis Desktop Manager
  • 黑悟空!一区预定!原创首发!SLWCHOA-Transformer-LSTM混合改进策略的黑猩猩优化算法多变量时间序列预测
  • FPGA速度优化
  • sickos 靶机渗透(wolf cms 渗透,squid 代理)
  • 【软件造价咨询】AI大模型能不能替代软件工程造价师完成软件造价?
  • RabbitMQ和Kafka的区别
  • python-A-B数对
  • WPF MVVM如何在ViewModel直接操作控件对象
  • 【数学建模国赛思路预约】2024高教社杯全国大学生数学建模竞赛助攻——思路、可运行代码、成品参考
  • 【数据结构】Set的使用与注意事项
  • 正则表达式实现括号替换
  • 【机器学习】CNN在计算机视觉中的应用
  • 数学建模学习(130):神经网络预测—模型选择与实战案例解析
  • LeetCode—string练习
  • etcdctl defrag 剔除、添加etcd节点
  • 调用k8s api实现添加用户并授权
  • 【Hot100】LeetCode—33. 搜索旋转排序数组
  • 台球助教APP小程序的前端交互设计
  • Redis的内存淘汰策略
  • 正则表达式实现带有条件的爬取
  • 动态规划-最大子数组和