SQL语句中:UNION与UNION ALL的区别

有些人看到题目,瞬间觉得楼主也太弱了吧,这种问题也要拿出来写,这种问题 随便会点sql 的人基本都会 

Union   是会删除冗余数据

Union ALL 不会删除冗余数据 将所有的结果都展现给用户

好吧,这是二者的主要差别,对于一般人来说,知道这个也就足够了。如果较真的话,其实里边有很多细节,比如Union 如果删除冗余数据的话,那么请问最后保留的展示的数据时来源于未删除冗余的结果集中的第一条还是最后一条还是中间某一条。好吧,其实这个我也不清楚,不过感觉用处不大,此处忽略。

  此处 我只是写下我在尝试的时候,发现的一些细节:

首先Union 会合并上边查询的所有结果集 和接下来的第一个结果集中的 重复数据

如(1)

SELECT 1 AS a 
UNION  ALL
SELECT 1 AS a 
UNION  ALL
SELECT 2 AS a
UNION
SELECT 1 AS a 
则只会显示

a

1
2

 

 

(2)

SELECT 1 AS a 
UNION  ALL
SELECT 1 AS a 
UNION  ALL
SELECT 2 AS a
UNION
SELECT 1 AS a 
UNION  ALL
SELECT 1 AS a

 

如这一段代码 

结果会显示

a

1
2
1

为啥没有合并结果集呢  有两个1 呢, 因为按照执行顺序   最后一条的 SELECT 1 AS a 是不会被union作用到的  所以不会被筛选掉

而如果这样

(3)

SELECT 1 AS a 
UNION  ALL
SELECT 1 AS a 
UNION  ALL
SELECT 2 AS a
UNION
(SELECT 1 AS a 
UNION  ALL
SELECT 1 AS a)

结果就为

a

1
2

就会显示和(1)中一样的结果了

 

posted @   王若伊_恩赐解脱  阅读(837)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)

点击右上角即可分享
微信分享提示