溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Oracle 中union的用法

發(fā)布時(shí)間:2020-05-28 10:25:10 來(lái)源:網(wǎng)絡(luò) 閱讀:803 作者:cm_tyq 欄目:關(guān)系型數(shù)據(jù)庫(kù)

UNION 指令的目的是將兩個(gè) SQL 語(yǔ)句的結(jié)果合并起來(lái),可以查看你要的查詢結(jié)果.

例如:

SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales

注意:union用法中,兩個(gè)select語(yǔ)句的字段類(lèi)型匹配,而且字段個(gè)數(shù)要相同,如上面的例子,在實(shí)際的軟件開(kāi)發(fā)過(guò)程,會(huì)遇到更復(fù)雜的情況,具體請(qǐng)看下面的例子

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

這個(gè)句子的意思是將兩個(gè)sql語(yǔ)句union查詢出來(lái),查詢的條件就是看XMDA表中的FL_ID是否和主表FLDA里的FL_ID值相匹配,(也就是存在).

UNION
在進(jìn)行表鏈接后會(huì)篩選掉重復(fù)的記錄,所以在表鏈接后會(huì)對(duì)所產(chǎn)生的結(jié)果集進(jìn)行排序運(yùn)算,刪除重復(fù)的記錄再返回結(jié)果。

在查詢中會(huì)遇到 UNION ALL,它的用法和union一樣,只不過(guò)union含有distinct的功能,它會(huì)把兩張表了重復(fù)的記錄去掉,union all不會(huì),所以從效率上,union all 會(huì)高一點(diǎn),但在實(shí)際中用到的并不是很多.

表頭會(huì)用第一個(gè)連接塊的字段。。。。。。。。。。

UNION ALL只是簡(jiǎn)單的將兩個(gè)結(jié)果合并后就返回。這樣,如果返回的兩個(gè)結(jié)果集中有重復(fù)的數(shù)據(jù),那么返回的結(jié)果集就會(huì)包含重復(fù)的數(shù)據(jù)了。

  從效率上說(shuō),UNION ALL 要比UNION快很多,所以,如果可以確認(rèn)合并的兩個(gè)結(jié)果集中不包含重復(fù)的數(shù)據(jù)的話,那么就使用UNION ALL,如下:

盡量使用union all,因?yàn)?/span>union需要進(jìn)行排序,去除重復(fù)記錄,效率低

 

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI