2013年6月21日 星期五

ANY、ALL、SOME

INALLSOMEANY 都算是邏輯運算子

  • IN 後面可接一個清單,或是一個單一欄位結果集的子查詢
  • ALLSOMEANY 後面只可以接單一欄位結果集的子查詢

語法

scalar_expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } 
     { ALL | SOME | ANY } ( subquery ) 
  • SOMEANY 是相同意義的。使用這二個運算子時,只要 scalar_exp 符合 subquery 中任何一個值,判斷式就會成立。
  • ALL 運算子則必須 scalar_exp 符合 subquery 中所有的值,判斷式才成立。
  • ALL 是一個受限制的 SELECT 陳述式,其中不允許使用 ORDER BY 子句和 INTO 關鍵字。

範例說明

建立測試資料

CREATE TABLE #T1(ID int) ;

INSERT #T1 VALUES (1) ;
INSERT #T1 VALUES (2) ;
INSERT #T1 VALUES (3) ;
INSERT #T1 VALUES (4) ;

CREATE TABLE #T2(ID int) ;

INSERT #T2 VALUES (2) ;
INSERT #T2 VALUES (3) ;

例1:

SELECT * FROM #T1 WHERE ID IN ( SELECT ID FROM #T2 )

SELECT * FROM #T1 WHERE ID < SOME ( SELECT ID FROM #T2)

SELECT * FROM #T1 WHERE ID < ANY ( SELECT ID FROM #T2)

SELECT * FROM #T1 WHERE ID < ALL ( SELECT ID FROM #T2)

例2:

SELECT * FROM #T1 WHERE ID NOT IN ( SELECT ID FROM #T2 )

SELECT * FROM #T1 WHERE ID <> SOME ( SELECT ID FROM #T2)

SELECT * FROM #T1 WHERE ID <> ANY ( SELECT ID FROM #T2)

SELECT * FROM #T1 WHERE ID <> ALL ( SELECT ID FROM #T2)

沒有留言:

張貼留言