zoukankan      html  css  js  c++  java
  • Union与Union All的区别

    如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。

    union(或称为联合)的作用是将多个结果合并在一起显示出来。

    union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。

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

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

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

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

     标红的这两个还真没有用过!

    可以在最后一个结果集中指定Order by子句改变排序方式。

    例如:

    select employee_id,job_id from employees
    union
    select employee_id,job_id from job_history

    以上将两个表的结果联合在一起。这两个例子会将两个select语句的结果中的重复值进行压缩,也就是结果的数据并不是两条结果的条数的和。如果希望即使重复的结果显示出来可以使用union all,例如:

    2.在oracle的scott用户中有表emp
    select * from emp where deptno >= 20
    union all
    select * from emp where deptno <= 30
    这里的结果就有很多重复值了。

    有关union和union all关键字需要注意的问题是:

    union 和 union all都可以将多个结果集合并,而不仅仅是两个,你可以将多个结果集串起来。
    使用union和union all必须保证各个select 集合的结果有相同个数的列,并且每个列的类型是一样的。但列名则不一定需要相同,oracle会将第一个结果的列名作为结果集的列名。例如下面是一个例子:
    select empno,ename from emp
    union
    select deptno,dname from dept
    我们没有必要在每一个select结果集中使用order by子句来进行排序,我们可以在最后使用一条order by来对整个结果进行排序。例如:
    select empno,ename from emp
    union
    select deptno,dname from dept
    order by ename

    虽然很基础,但能回答的全面还真不容易!


     


     

  • 相关阅读:
    leetcode Remove Linked List Elements
    leetcode Word Pattern
    leetcode Isomorphic Strings
    leetcode Valid Parentheses
    leetcode Remove Nth Node From End of List
    leetcode Contains Duplicate II
    leetcode Rectangle Area
    leetcode Length of Last Word
    leetcode Valid Sudoku
    leetcode Reverse Bits
  • 原文地址:https://www.cnblogs.com/hoge/p/2085565.html
Copyright © 2011-2022 走看看