繁体   English   中英

基于一对多SQL连接排除记录

[英]Excluding records based upon a one to many SQL join

如果一个到多个连接中的一个(外部)记录匹配某个条件,我将如何编写排除记录的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')

建立在systempuntoout的解决方案上:

SELECT details.*
FROM details 
LEFT OUTER JOIN items ON details.ID=items.DetailID AND items.Item = 'A'
WHERE items.DetailID IS NULL

为什么不直接使用INNER JOIN:

SELECT details.*
FROM details 
INNER JOIN items ON details.ID=items.DetailID AND items.Item<> 'A'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM