Oracle 中union的用法

2021-09-01 12:04:47 字數 2458 閱讀 6913

union與union all的區別

2011-05-12 14:53

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;

union 指令的目的是將兩個 sql 語句的結果合併起來,可以檢視你要的查詢結果. 

例如: 

select date from store_information 

union 

select date from internet_sales 

注意:union用法中,兩個select語句的字段型別匹配,而且字段個數要相同,如上面的例子,在實際的軟體開發過程,會遇到更複雜的情況,具體請看下面的例子 

select  '1' as type,fl_id,fl_code,fl_cname,flda.fl_parentid from flda 

where zt_id=2006030002 

union  

select  '2' as type,xm_id,xm_code ,xm_cname ,fl_id from xmda 

where exists (select * from (select  fl_id from flda where zt_id=2006030002 ) a where xmda.fl_id=a.fl_id) 

order by type,fl_parentid ,fl_id 

這個句子的意思是將兩個sql語句union查詢出來,查詢的條件就是看xmda表中的fl_id是否和主表flda裡的fl_id值相匹配,(也就是存在). 

union在進行表鏈結後會篩選掉重複的記錄,所以在表鏈結後會對所產生的結果集進行排序運算,刪除重複的記錄再返回結果。 

在查詢中會遇到 union all,它的用法和union一樣,只不過union含有distinct的功能,它會把兩張表了重複的記錄去掉,而union all不會,所以從效率上,union all 會高一點,但在實際中用到的並不是很多. 

表頭會用第乙個連線塊的字段。。。。。。。。。。 

而union all只是簡單的將兩個結果合併後就返回。這樣,如果返回的兩個結果集中有重複的資料,那麼返回的結果集就會包含重複的資料了。 

從效率上說,union all 要比union快很多,所以,如果可以確認合併的兩個結果集中不包含重複的資料的話,那麼就使用union all,如下: 

盡量使用union all,因為union需要進行排序,去除重覆記錄,效率低

Oracle 中union的用法

例如 select date from store information union select date from internet sales 注意 union用法中,兩個select語句的字段型別匹配,而且字段個數要相同,如上面的例子,在實際的軟體開發過程,會遇到更複雜的情況,具體請看下面...

Oracle中UNION的用法

union 指令的目的是將兩個 sql 語句的結果合併起來,可以檢視你要的查詢結果.例如 select date from store information union select date from internet sales 注意 union用法中,兩個select語句的字段型別匹配,而且...

Oracle 中union的用法

oracle 中union的用法 union 指令的目的是將兩個 sql 語句的結果合併起來,可以檢視你要的查詢結果.例如 select date from store information union select date from internet sales 注意 union用法中,兩個s...