SQL Server数据库Union和Union All查询出数据的区别?
好久没有更新博客了,可能是最近比较忙,总是忽略了一些事情,今天查了做了一些数据分析的数据,突然感觉对Union和Union all有些不太理解了,可能是自己老了吧,就翻了一些资料,进行回忆和学习,趁着这个下班的空余时间,做个小总结,希望可以帮到正在数据库迷茫路上的你。
下边我先贴出官方的解释(自己的官方(*^__^*) 嘻嘻……):
UNION
操作符用于合并两个或多个 SELECT 语句的结果集(不包括重复行,并进行默认规则的排序)。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同
UNION ALL
操作符用于合并两个或多个 SELECT 语句的结果集(包括重复行,不进行排序)。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同
下边进行语句测试,由于着急回家,我就不建库、建表了,直接使用我现有的数据,有疑问可以给我留言。
测试如下:
第一步:SELECT * FROM YXBAK..TABLE1,TABLE1表内有一条重复的数据,总共10条数据。

SELECT * FROM YXBAK..TABLE2,TABLE2表内有一条重复的数据,其中前10条数据是和TABLE1表数据一样,总共20条数据。

第二步:数据准备完成,进行Union和Union All的验证,看结果如何。
执行Union语句连接两表查询,我们发现一共查询出19条数据,我们准备的两个表的数据一共是30条,分析:Union将两个表内的重复数据进行剔除,并按序号进行排序。
SELECT * FROM YXBAK..TABLE1
UNION
SELECT * FROM YXBAK..TABLE2

执行Union All语句连接两表查询,我们发现一共查询出30条数据,分析:Union All将两个表内的进行合并,并未去重,且未按序号进行排序。
SELECT * FROM YXBAK..TABLE1
UNION ALL
SELECT * FROM YXBAK..TABLE2

总结:
Union可能查非重复数据时用的比较多, 因为Union 是取唯一值,记录没有重复数据
Union All是直接连接,取到得是所查询表内的所有值,记录可能有重复
效率:
UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。
1、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录。
2、对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回。
从效率上说,UNION ALL 要比UNION(需要去重和排序)快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用UNION ALL。
简要回答:
UNION去重且排序,效率较低
UNION ALL不去重不排序,效率高
每天积累一点点,希望可以忙到奋斗路上的你。
SQL Server数据库Union和Union All查询出数据的区别?的更多相关文章
- sql server数据库备份单个表的结构和数据生成脚本
1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...
- sql server数据库备份单个表的结构和数据生成脚本【转】
1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...
- SQL SERVER 数据库中查看文本字段中的数据长度LEN() 函数的使用方法
SQL LEN() 语法 SELECT LEN(column_name) FROM table_name Id LastName FirstName Address City 1 Adams John ...
- Sql Server数据库之通过SqlBulkCopy快速插入大量数据
废话不多说,直接上代码 /// <summary> /// 海量数据插入方法 /// </summary> /// <param name="connectio ...
- 浅析SQL Server数据库中的伪列以及伪列的含义
SQL Server中的伪列 下午看QQ群有人在讨论(非聚集)索引的存储,说,对于聚集索引表,非聚集索引存储的是索引键值+聚集索引键值:对于非聚集索引表,索引存储的是索引键值+RowId,这应该是一个 ...
- 转载 50种方法优化SQL Server数据库查询
原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1 ...
- SQL Server数据库 优化查询速度
查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 ...
- 优化SQL Server数据库查询方法
SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列 ...
- 不同SQL Server数据库之间的跨数据库查询
--不同SQL Server数据库之间的跨数据库查询 EXEC sp_addlinkedserver @server=N'OldDatabase', --自己定义别名 @srvproduct=N'', ...
随机推荐
- VMware虚拟机中共享文件夹 开机启动
输入命令: sudo /usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000 -o gid=1000 -o umask=02 ...
- seajs模块化jQuery与jQuery插件【转】
把jQuery修改成SeaJs的模块代码非常简单,就是用下面这段语句将jQuery源代码包裹起来: define('jquery',[],function(require, exports, modu ...
- 第二章 rsync服务原理
一.备份 1.什么是备份? 1)把重要的数据或者文件再次复制一份并保存下来 2.为什么要做备份? 1)数据的重要性 2)为了出现故障,恢复数据 3.能不能不备份? 1)重要的数据一定要备份 2)不重要 ...
- dns配置文件的方式
1./etc/resolve.conf /etc/resolv.conf它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序.该文件是由域名解析 器(res ...
- zookeeper Cli的常用命令
zookeeper Cli的常用命令 服务管理 启动ZK服务: zkServer.sh start 查看ZK状态: zkServer.sh status 停止ZK服务: zkServer.sh sto ...
- js逻辑程序
JavaScript 是 Web 的编程语言. 所有现代的 HTML 页面都使用 JavaScript. JavaScript 非常容易学. 本教程将教你学习从初级到高级 JavaScript 知识. ...
- RocketMQ消息丢失解决方案:同步刷盘+手动提交
前言 之前我们一起了解了使用RocketMQ事务消息解决生产者发送消息时消息丢失的问题,但使用了事务消息后消息就一定不会丢失了吗,肯定是不能保证的. 因为虽然我们解决了生产者发送消息时候的消息丢失问题 ...
- 如何在 vue 项目里正确地引用 jquery
转载 2016年11月13日 使用vue-cli构建的vue项目,webpack的配置文件是分散在很多地方的,而我们需要修改的是build/webpack.base.conf.js,修改两处的代码 / ...
- 枚举的使用(限foton)
使用: /** * 服务真实性标签 * * @param realRepairs * 真实维修单数 * @param totalRepairs * 总单数 * @return */ public st ...
- python爬虫 学习1
1 import requests 2 from bs4 import BeautifulSoup 3 import bs4 4 def gethtmltext(url): #获取html内容,利用t ...