1. 程式人生 > >Oracle中Union與UnionAll的區別(union會合並多個重複結果)

Oracle中Union與UnionAll的區別(union會合並多個重複結果)

轉自:http://www.educity.cn/wenda/389698.html

Oracle中Union與UnionAll的區別如果我們需要將兩個select語

句的結果作為一個整

提問者: saixijiaoyu     釋出時間:2014-06-18     瀏覽:2     回覆:0     懸賞:0.0希賽幣 Oracle中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,例如:

  select * from emp where deptno >= 20 union all select * from emp where deptno <= 30

  這裡的結果就有很多重複值了。