zoukankan      html  css  js  c++  java
  • 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都有效。
  • 相关阅读:
    半同步/半反应堆线程池
    各种排序算法总结
    【面试题】求连续子数组的最大和(三种解法)
    数据结构查找、插入、删除时间复杂度
    红黑树
    opencv 图像基本操作
    plotroc.m
    roc.m
    perfcurve.m
    637. Average of Levels in Binary Tree
  • 原文地址:https://www.cnblogs.com/bluedeblog/p/6653946.html
Copyright © 2011-2022 走看看