ORACLE SQL的EXCEPT、INTERSECT用法

chenfeng發表於2016-03-25

EXCEPT 返回兩個結果集的差(即從左查詢中返回右查詢沒有找到的所有非重複值)。

INTERSECT 返回 兩個結果集的交集(即兩個查詢都返回的所有非重複值)。


限制條件
  • (1)所有查詢中的列數和列的順序必須相同。
  • (2)比較的兩個查詢結果集中的列資料型別可以不同但必須相容。
  • (3)比較的兩個查詢結果集中不能包含不可比較的資料型別(xml、text、ntext、image 或非二進位制 CLR 使用者定義型別)的列。
  • (4)返回的結果集的列名與運算元左側的查詢返回的列名相同。ORDER BY 子句中的列名或別名必須引用左側查詢返回的列名。
  • (5)不能與 COMPUTE 和 COMPUTE BY 子句一起使用。
  • (6)透過比較行來確定非重複值時,兩個 NULL 值被視為相等。(EXCEPT 或 INTERSECT 返回的結果集中的任何列的為空性與運算元左側的查詢返回的對應列的為空性相同。) 

舉例:

Table A                                            Table B

NULL NULL
NULL
 
 
:(SELECT * FROM TableA) EXCEPT (SELECT * FROM TableB)
結果: 1
(1 row(s) affected)
B: SELECT * FROM TableA INTERSECT SELECT * FROM TableB
結果:2
   3
   4
   5
    (4 row(s) affected)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2063625/,如需轉載,請註明出處,否則將追究法律責任。

相關文章