MySQL选择满足特定条件的行
我有一个表MySQL选择满足特定条件的行,mysql,select,Mysql,Select,我有一个表订单,看起来确实像这样: order_id | item_id | quantity 1 1 2 1 2 5 2 3 13 2 4 5 3 3 1 我确实想选择所有行,但我想跳过整个订单,因为它确实包含13个项目_id 3。在本例中,它应该跳过顺序为2的行。可以用一个简单的查询吗?您可以
订单
,看起来确实像这样:
order_id | item_id | quantity
1 1 2
1 2 5
2 3 13
2 4 5
3 3 1
我确实想选择所有行,但我想跳过整个订单,因为它确实包含13个项目_id 3。在本例中,它应该跳过顺序为2的行。可以用一个简单的查询吗?您可以使用
NOT EXISTS
子句查找没有13个项目id的订单
3:
SELECT *
FROM orders o1
WHERE NOT EXISTS (SELECT *
FROM orders o2
WHERE o2.order_id = o1.order_id
AND o2.item_id = 3
AND o2.quantity = 13)
输出:
order_id item_id quantity
1 1 2
1 2 5
3 3 1
NOT EXISTS(不存在)方法似乎按预期工作-非常感谢!我只想补充一个问题:我已经读到嵌套的SELECT查询不利于性能。在这种情况下,我应该担心吗?@Zorann no-notexists查询几乎总是执行此类查询的最有效方式