Oracle中Union與UnionAll的區別(union會合並多個重複結果)
阿新 • • 發佈:2019-01-23
轉自: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
這裡的結果就有很多重複值了。