NOT的SQL Select语句用于行组的多个值



我试图使用NOT IN查询,但将其应用于列值相同的行批。SELECT * FROM CHECKOUTS WHERE ProductId NOT IN (2345)将返回ProductName为Toy2和Toy3的行,但我希望它不返回Toy2 b/c,CheckoutId与Toy1相同。

本质上,我希望NOT IN查询在具有相同CheckoutId的一批行中运行。与其归还Toy2和Toy3,我希望它只归还Toy3。

CheckoutId ProductId ProductName
1234 2345 Toy1
1234 0987 Toy2
0123 8787 Toy3

您可以通过两个步骤来解决查询,尽管它们可以组合在一个查询中。第一步:找到那些你不想要的结账ID。第二步:获取没有这些id的结账记录。

SELECT * 
FROM CHECKOUTS 
WHERE 
CheckoutId NOT IN (
SELECT CheckoutId 
FROM CHECKOUTS 
WHERE ProductId IN (2345));

最新更新