如果一对多联接中的一条(外部)记录与某个条件匹配,我如何编写排除记录的SQL查询?
例如:
Details
ID
1
2
Items
DetailID Item
1 A
1 B
2 B
2 C
如何选择项目不包含“A”的详细记录?
答案 0 :(得分:6)
SELECT *
FROM details d
WHERE NOT EXISTS (
SELECT *
FROM items i
WHERE i.DetailID == d.ID
AND i.Item = 'A')
答案 1 :(得分:2)
建立在systempuntoout的解决方案上:
SELECT details.*
FROM details
LEFT OUTER JOIN items ON details.ID=items.DetailID AND items.Item = 'A'
WHERE items.DetailID IS NULL
答案 2 :(得分:0)
为什么不直接使用INNER JOIN:
SELECT details.*
FROM details
INNER JOIN items ON details.ID=items.DetailID AND items.Item<> 'A'