Union和Union All的差别

系统 1743 0

如果我们有一个表Student,包含下面字段与数据:

 

 

首先,我们来看一下UNION的样例:


 

假设换成Union All连接两个结果集,则结果例如以下:

 

 

能够看到, Union和Union All的差别之中的一个在于对反复结果的处理。

 

接下来,我们交换一个两个SELECT语句的顺序,看看结果是如何的。

 

 

能够看到,对于UNION来说,交换两个SELECT语句的顺序后结果仍然是一样的,这是由于 UNION会自己主动排序 。而UNION ALL在交换了SELECT语句的顺序后结果则不同样,由于UNION ALL不会对结果自己主动进行排序。

 

那么这个自己主动排序的规则是什么呢? 我们交换一下SELECT后面选择字段的顺序(前面使用SELECT *相当于SELECT ID,NAME,SCORE),看看结果怎样:

 

 

但是看到,此时是依照字段SCORE来对结果进行排序的(前面SELECT *的时候是依照ID进行排序的)。

 

那么有人会问,假设我想自行控制排序, 能不能使用ORDER BY呢?当然能够。 只是在写法上有须要注意的地方:

 

 

order by子句必须写在最后一个结果集里,而且其排序规则将改变操作后的排序结果。对于Union、Union All、Intersect、Minus都有效。

 

其它的集合操作符,如Intersect和Minus的操作和Union基本一致,这里一起总结一下:

 

Union,对两个结果集进行并集操作,不包含反复行,同一时候进行默认规则的排序;

Union All,对两个结果集进行并集操作,包含反复行,不进行排序;

Intersect,对两个结果集进行交集操作,不包含反复行,同一时候进行默认规则的排序;

Minus,对两个结果集进行差操作,不包含反复行,同一时候进行默认规则的排序。

 

能够在最后一个结果集中指定Order by子句改变排序方式。

 

 

 

Union和Union All的差别


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论