• SQL中Union和Union All


      工作中,看到大佬写的一段SQL,查询了五个表中的数据,最后求某个收入的总和,其中使用了Union All,因此在这里记录一下我从中学到的东西

      先上语法

      Union:   [ Select语句1 ]

                      Union

            [ Select语句2 ]

                      Union

                      ...

    Union All:   [ Select语句1 ]

                         Union All

                         [ Select语句2 ]

                         Union All

                         ... 

      Union 和 Union All  都是用来将多个SELECT语句查询出的结果集进行合并,得到的是一个临时表,要对这个临时表进行操作,需要起别名

      要注意的是,使用这两个操作符的时候,多个查询语句查出来的结果集应具有相同的列数,列的顺序也必须相同(这里,如果数据库表中的字段名不一致,可以对列起别名,使要合并的结果集的列名一致),同时列的数据类型也要相同

      Union是讲SELECT语句查出来的结果集合并,并且将其中重复的值去除掉,只显示不同的值,如果要显示重复的值,就需要使用Union All

      也就是说,Union会对查询出来的结果集进行去除重复值的操作,并且会按照字段的顺序进行排序,而Union All会将结果集直接全部显示且不会进行排序,这也就导致了Union All 的效率要比Union 好很多

      使用Union 操作符时,子句中不可以使用order by,使用后执行会报错,如果逻辑上必须对查询语句进行排序,那么可以在SELECT查询语句中使用子查询来进行order by排序

      所以,一般不要求去重的时候,合并结果集选择Union All 比较好

    2019-02-12  修改

      之前写到使用Union操作符时,子句不可以使用order by,这是不严谨的,应该是Union操作符之前的子句不可以使用order by

      

      order by子句在Union操作符之后,可以正常查出数据,并且是按照order by的排序方式展示数据

      

  • 相关阅读:
    Ubuntu 安装 Caffe
    数字图像处理
    直方图均衡化
    神经网络深层网络实现
    CNN理解与实现
    ReactiveX 学习笔记(19)使用 RxSwift + RxCocoa 进行 GUI 编程
    ReactiveX 学习笔记(18)使用 RxJS + Angular 调用 REST API
    ReactiveX 学习笔记(17)使用 RxSwift + Alamofire 调用 REST API
    JSON数据的解析和生成(Swift)
    Haskell语言学习笔记(92)HXT
  • 原文地址:https://www.cnblogs.com/haley24/p/10101701.html
Copyright © 2020-2023  润新知