zoukankan      html  css  js  c++  java
  • Union和Union All的差别

    如果我们有一个表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子句改变排序方式。

  • 相关阅读:
    大二(上期)学期末个人学习总结
    《梦断代码》阅读笔记01
    软件工程概论课程评价
    03《构建之法》阅读笔记第三篇(终结篇)
    02《构建之法》阅读笔记第二篇
    个人简评——2345王牌拼音输入法
    《人件集》阅读笔记第一篇
    个人学习进度条
    AcWing ST算法(区间求最值)打卡
    AcWing 101. 最高的牛 (差分) 打卡
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4068986.html
Copyright © 2011-2022 走看看