如何判斷多個字段組成的關鍵字在另外一張表中是否存在 老帥(20141107) 1.首先判斷一個關鍵字在另外一張表中是否存在很容易! SELECT * FROM a WHERE a.ID IN ( SELECT b.ID FROM b ) 2.如果判斷的關鍵字有多個字段構成怎么辦呢? 你不能在IN中使用多個字段
如何判斷多個字段組成的關鍵字在另外一張表中是否存在
老帥(20141107)
1.首先判斷一個關鍵字在另外一張表中是否存在很容易!
SELECT * FROM a
WHERE a.ID
IN
(
SELECT b.ID
FROM b
)
2.如果判斷的關鍵字有多個字段構成怎么辦呢?
你不能在IN中使用多個字段。如下查詢:
SELECT * FROM a
WHERE (a.ID1, a.ID2)
IN
(
SELECT b.ID1, b.ID2
FROM b
)
這不會正常工作,違反了SQLSERVER標準。
3.要解決這一問題,可以用EXISTS來代替IN!
SELECT * FROM a
WHERE EXISTS
(
SELECT NULL
FROM b
WHERE a.ID1 = b.ID1
AND a.ID2 = b.ID2
)
4.值得注意的是,這僅適用于IN,而非NOT IN!
NOT IN與NOT EXISTS在處理空值的方式上略有不同。
SELECT *
FROM a
WHERE (a.ID1, a.ID2) NOT IN
(
SELECT b.ID1, b.ID2
FROM b
)
這不會正常工作,違反了SQLSERVER標準。要模仿NOT IN的查詢如下:
我們必須使用以下查詢:
SELECT *
FROM a
WHERE NOT EXISTS
(
SELECT NULL
FROM b
WHERE a.ID1 = b.ID1
AND a.ID2 = b.ID2
)
AND NOT EXISTS
(
SELECT NULL
FROM b
WHERE b.ID1 IS NULL
OR b.ID2 IS NULL
)
第二個謂詞確保b在ID1和ID2中不會有空值,任何這樣的值都會讓原始查詢不會返回結果!
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com