我有两张经典表格(好吧,不是我真正的问题)。订单和OrderItems。我想使用单个语句删除所有没有OrderItems的订单。我可以通过以下查询获取我要删除的订单列表:
SELECT COUNT(*),OrderId
FROM OrderItems
GROUP BY OrderId
HAVING COUNT(*) > 0
我想做的是:
DELETE FROM Orders WHERE Id NOT IN (....)
其中“....”是我上面的SELECT。选择给了我两列,我真的不想要第二列,只是第一列。
我觉得有某种自我加入,或类似我可以使用的东西,但我只是在阅读时才读到。
答案 0 :(得分:1)
DELETE from Orders Where Id NOT IN (SELECT OrderId
FROM OrderItems
GROUP BY OrderId
HAVING COUNT(*) >0);