根据一对多SQL排除记录
问题描述:
如何编写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