• Union、Union All、Intersect、Minus


    转自:http://www.2cto.com/database/201208/148795.html

    Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

    Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
    Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
    Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
      www.2cto.com  
    具体讲讲Union和Union All。先来看一个例子:
     
    有一张学生表student如下:
    id name score
    1 Aaron 78
    2 Bill 76
    3 Cindy 89
    4 Damon 90
    5 Ella 73
    6 Frado 61
    7 Gill 99
    8 Hellen 56
    9 Ivan 93
    10 Jay 90
     
    看看以下4段SQL语句
    [sql] 
    1)  
    select * from student where id<4  
    union  
    select * from student where 2<id and id<6  
      
    2)  
    select * from student where 2<id and id<6  
    union  
    select * from student where id<4  
        www.2cto.com  
    3)  
    select * from student where id<4  
    union all  
    select * from student where 2<id and id<6  
      
    4)  
    select * from student where 2<id and id<6  
    union all  
    select * from student where id<4  
     
    看看4段SQL语句的执行结果:
    id name score
    1 Aaron 78
    2 Bill 76
    3 Cindy 89
    4 Damon 90
    5 Ella 73
    同上
      www.2cto.com  
    id name score
    1 Aaron 78
    2 Bill 76
    3 Cindy 89
    3 Cindy 89
    4 Damon 90
    5 Ella 73
    id name score
    3 Cindy 89
    4 Damon 90
    5 Ella 73
    1 Aaron 78
    2 Bill 76
    3 Cindy 89
    从以上四个结果来看,可以得出结论:Union是不可重复的,有序的。Union All是可以重复的,无序的。
     
    那么Union的自动排序的默认规则是什么呢?
    众多周知,以上的select *就相当于select id, name, score。默认排序规则是按照select之后的第一个字段排序,也就是id。如果想要按照score排序,可以这样写:select score, id, name。
    那么可不可以用order by排序呢,答案是:可以。不过order by一定要写到最后一个结果集里,如下面SQL语句:
     
    [sql] 
    select * from student where 2<id and id<6  
    union    www.2cto.com  
    select * from student where id<4  
    order by score  
    order by 排序对于Union、Union All、Intersect、Minus都有效。
  • 相关阅读:
    repo sync中遇到:contains uncommitted changes
    <kernel>/scripts/checkpatch.pl脚本可用来检查代码书写不规范和作一些简单的代码静态检查
    各国股市开盘与收盘时间
    分页数据绑定例子模板
    提升网络销售转化率的10种方法
    网络业务员
    股票入门:如何看盘
    带样式的页码代码
    看着一年一度的高考,虽然高考已经离我远去
    ajax处理函数模板代码
  • 原文地址:https://www.cnblogs.com/bluedeblog/p/6653946.html
Copyright © 2020-2023  润新知