如何編寫SQL查詢以排除記錄,如果一對多連接中的某個(外部)記錄與特定條件匹配?根據一對多SQL排除記錄
例如:
Details
ID
1
2
Items
DetailID Item
1 A
1 B
2 B
2 C
我怎麼會選擇了詳細記錄,其中的項目不包括「A」?
如何編寫SQL查詢以排除記錄,如果一對多連接中的某個(外部)記錄與特定條件匹配?根據一對多SQL排除記錄
例如:
Details
ID
1
2
Items
DetailID Item
1 A
1 B
2 B
2 C
我怎麼會選擇了詳細記錄,其中的項目不包括「A」?
SELECT *
FROM details d
WHERE NOT EXISTS (
SELECT *
FROM items i
WHERE i.DetailID == d.ID
AND i.Item = 'A')
爲什麼不直接使用INNER JOIN,如:上systempuntoout的解決方案
SELECT details.*
FROM details
INNER JOIN items ON details.ID=items.DetailID AND items.Item<> 'A'
建築:
SELECT details.*
FROM details
LEFT OUTER JOIN items ON details.ID=items.DetailID AND items.Item = 'A'
WHERE items.DetailID IS NULL
,將返回第二行中的項目表中。 OP想要完全排除detailId = 1。 – 2010-04-08 09:57:18
OP是否明確表示要求:)可能就像你說的那樣。 – systempuntoout 2010-04-08 10:01:54