我想返回已售出产品ID列表的所有employeeID。
所以我有一个交易表:
交易 -ID -员工ID -productID
所以我想要退回已售出产品1023,2012,3941和2012的所有employeeID。
select productID
from transactions
where productID IN (1023, 2012, 3941, 2012)
上面的查询是错误的,因为如果员工只从列表中卖出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