2015-04-17 51 views
0

我有两个经典表(好吧,不是我真正的问题)。订单和订单项。我想使用单个语句删除所有没有OrderItem的订单。我能得到我想要删除与这样的查询订单列表:如何获得单列结果从SqlServer查询使用组

SELECT COUNT(*),OrderId 
FROM OrderItems 
GROUP BY OrderId 
HAVING COUNT(*) > 0 

,我想要做的是一样的东西:

DELETE FROM Orders WHERE Id NOT IN (....) 

其中“......”是我的上面选择。选择给了我两列,我真的不想第二列,只是第一列。

我觉得有某种自我加入,或类似的东西,我可以使用,但我只读,当谈到这一点。

+3

从SELECT语句中除去COUNT(*),并保留GROUP BY和HAVING子句。 – Glenn

回答

1
DELETE from Orders Where Id NOT IN (SELECT OrderId 
FROM OrderItems 
GROUP BY OrderId 
HAVING COUNT(*) >0); 
+0

谢谢。不知道为什么我认为我必须在那里有数量(*)。 –

相关问题