具有多个连接和排除的 SQL 查询
Posted
技术标签:
【中文标题】具有多个连接和排除的 SQL 查询【英文标题】:SQL Query with Multiple Joins and exclusions 【发布时间】:2015-09-09 13:45:00 【问题描述】:我有两个表 Table A=Orders 和 Table B=OrderDetails,它们由唯一的 order_no 连接。
对于 Order TableA 中的每个 ORDER_no,可以在 OrderDetails 表 B 中附加多行。基本上,如果表 B 中的任何行等于特定名称,我需要一个查询来排除两个表中的整个 Order。
例子:
如果 Order 1234 在 OrderDetails TableB 中有 5 行,其中一行 = 'NOTE',那么我希望将整个 ORder 1234 从结果中排除。目前它只排除了该行但显示了其他行?
【问题讨论】:
坚持使用相同的名称,即 Orders 和 OrderDetails,或者 TableA 和 TableB。目前的组合太混乱了。 添加一些示例代码 【参考方案1】:这是你想要的吗?它获取没有“备注”详细记录的订单:
select o.*
from orders o
where not exists (select 1
from orderdetails od
where od.orderid = o.orderid and od.name = 'Notes'
);
如果你想要所有的详细记录,你可以在外部查询中加入orderdetails
。
【讨论】:
是的,这似乎可行,现在我只需要调整其他表的附加连接即可。希望我现在可以添加复杂的连接,因为我只选择那些没有注释的订单。谢谢。 工作完美,感谢您的快速回复和破译我的问题,我是新手 :)以上是关于具有多个连接和排除的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章