• ORACLE中union/union all/Intersect/Minus用法


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

    Union All,对两个结果集进行并集操作,包括重复行不进行排序

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

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

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

    表头会用第一个连接块的字段

    1.Union

    union用法中,两个select语句的字段类型匹配,而且字段个数要相同.

    UNION连接的两个表是同一表,使用UNION会过滤重复行,显示的是一张表的数据。

    下面SQL查询语句中两个表完全一样,所以查询显示的是单张表的信息。

    SCOTT@bys1>select deptno,dname as "aa",loc from dept union select deptno,dname,loc from dept;
        DEPTNO aa             LOC
    ---------- -------------- -------------
            10 ACCOUNTING     NEW YORK
            20 RESEARCH       DALLAS
            30 SALES          CHICAGO
            40 OPERATIONS     BOSTON

    2.Union All

    UNION ALL,它的用法和union一样,只不过union含有distinct的功能,它会把两张表了重复的记录去掉,

    而union all不会,所以从效率上,union all 会高一点,但在实际中用到的并不是很多.

    效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL。
    尽量使用union all,因为union需要进行排序,去除重复记录,效率低。 

    下面SQL查询语句中两个表完全一样,所以查询显示了两次表内信息。

    SCOTT@bys1>select deptno,dname,loc as "aa" from dept union allselect deptno,dname,loc as "bb" from dept;
        DEPTNO DNAME          aa
    ---------- -------------- -------------
            10 ACCOUNTING     NEW YORK
            20 RESEARCH       DALLAS
            30 SALES          CHICAGO
            40 OPERATIONS     BOSTON
            10 ACCOUNTING     NEW YORK
            20 RESEARCH       DALLAS
            30 SALES          CHICAGO
            40 OPERATIONS     BOSTON

    3.Intersect

    对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;返回两个表共同含有的数据,取出交集作为最终的返回结果。

    下面SQL查询语句中两个表完全一样,所以查询显示的是单张表的信息。
    SCOTT@bys1>select deptno,dname,loc as "aa" from dept intersect select deptno,dname,loc as "bb" from dept;
        DEPTNO DNAME          aa
    ---------- -------------- -------------
            10 ACCOUNTING     NEW YORK
            20 RESEARCH       DALLAS
            30 SALES          CHICAGO
            40 OPERATIONS     BOSTON

    4.Minus

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

    第一个结果集减去第二个结果集中的内容,所剩余的内容作为最终的返回结果。

    下面SQL查询语句中两个表完全一样,所以查询显示无信息。

    SCOTT@bys1>select deptno,dname,loc as "aa" from dept minus select deptno,dname,loc as "bb" from dept;

    no rows selected

  • 相关阅读:
    h5布局之道(最终篇)
    javascript 数组的常用方法总结
    排序算法之简单排序算法
    浅谈h5移动端页面的适配问题
    开园子啦(浅谈移动端以及h5的发展)
    Android开发(二):RelativeLayout、FrameLayout、LinearLayout、TableLayout、AbsoluteLayout各种Layout属性
    Android开发(一):android环境搭建
    为何没有人用DELPHI IDHTTP + WEB做三层应用
    Asp.net学习1-弹出消息框
    处理SQL函数IN问题
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3402664.html
Copyright © 2020-2023  润新知