您好,登錄后才能下訂單哦!
集合關鍵字:
1、UNION:并集,所有的內容都查詢,重復的顯示一次,默認進行升序排序;
2、UNIONALL:并集,所有的內容都顯示,包括重復的,展示內容沒有排序;
3、INTERSECT:交集,只顯示多個查詢中相同的元素部分;
4、MINUS:差集,顯示第一個查詢中有,第二個查詢中沒有的元素
例子:
在scott用戶下,創建表emp2,該表只包含emp中20部門員工的信息:
代碼:create table emp2 as select * fromemp where deptno=20;
先看下emp和emp2兩個表的區別:
[emp表結構及內容]
[emp2表結構及內容]
~ 驗證UNION及UNION ALL
UNION:select * from emp UNION select * from emp2;/*使用此語句,重復的內容不再顯示*/
UNION ALL:select * from emp UNION ALL select * from emp2;/*使用此語句,重復的內容依然顯示*/
~ 驗證INTERSECT
INTERSECT:select * from emp INTERSECT select * from emp2;/*使用此語句,只顯示兩個表中彼此重復的記錄*/
~ 驗證MINUS
MINUS:select * from emp MINUS select * from emp2;/*使用此語句,返回顯示差異的記錄*/
總結:
1、進行集合操作的兩個查詢中元素數量需要相同,數據類型相同或近似(推薦是相同);
2、Union和Union all的區別在于是否顯示重復的元素以及是否排序;
3、如果兩個查詢中元素列名稱不相同,進行集合操作時,結果顯示列名稱以第一個查詢為準;
4、進行集合操作的查詢,結尾處可以自行選擇是否加ORDER BY關鍵字,進行自定義排序;
5、如果兩個查詢中都有NULL這個空值元素,兩個查詢在進行Union合并操作時,只會顯示一個NULL元素行。雖然NULL<>NULL,但是Oracle在執行集合操作時,內部進行隱式函數處理: sys_op_map_nonnull(null)
函數解釋官方擴展:
In Oracle, NULL does not equal NULL:
This function makes it possible to have NULL =NULL:
翻譯:
在Oracle數據庫中,NULL不等于NULL
這個函數讓NULL=NULL成為可能。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。