如何返回ID在所有列表中的行?

时间:2016-02-17 16:21:16

标签: sql sql-server

我想返回已售出产品ID列表的所有employeeID。

所以我有一个交易表:

交易 -ID -员工ID -productID

所以我想要退回已售出产品1023,2012,3941和2012的所有employeeID。

select productID
from transactions
where productID IN (1023, 2012, 3941, 2012)

上面的查询是错误的,因为如果员工只从列表中卖出1,它将返回行,我只想返回已售出所有这些产品的员工。

1 个答案:

答案 0 :(得分:2)

您需要使用group by和having子句,这将检查员工销售的产品总数是4(仅过滤了当然需要的产品ID)

SELECT employeeID
FROM transactions
WHERE productID IN (1023, 3941, 2012)
GROUP BY employeeID
HAVING COUNT(distinct productID) = 3

我认为你有两次犯错,2012年两次?无论如何我删除了其中一个...如果你的意思是另一个而不是2012年,将它添加到IN语句并将数字更改为4