oracle 中 取兩個表的交集 差集的問題

1、intersect運算
返回查詢結果中相同的部分既他們的交集

SQL> select * from abc
  2  intersect
  3  select * from abc2 ;

2、minus運算
返回在第一個查詢結果中與第二個查詢結果不相同的那部分行記錄,
即兩個結果的差集

SQL> select * from abc2
  2  minus
  3  select * from abc ;

3、Union-Union all
   (1)UNION在進行錶鏈接後會篩選掉重複的記錄,所以在錶鏈接後會對所產生的結果集進行排序運算,刪除重複的記錄再返回結果
   (2)UNION ALL只是簡單的將兩個結果合併後就返回。如果返回的兩個結果集中有重複的數據,返回的結果集就會包含重複的數據
 
   注:從效率上說,UNION ALL要比UNION快很多,如果可以確認合併的兩個結果集中不包含重複的數據的話,就使用UNION ALL

使用 UNION 組合查詢的結果集有兩個最基本的規則:

(1)所有查詢中的列數和列的順序必須相同。

(2)數據類型必須兼容

Union:
SQL> select d.code,d.name from abc d
  2  union
  3  select e.code,e.name from abc3 e ;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章