我正在尝试编写一个简单的查询,其中每个ID都需要同时具有产品A和B,但两者都不需要。在我的示例中,我只想要ID#3和每个产品的返回,因为其他ID都不符合此条件。
我看了一下Count / Rank / Row_Number,似乎无法想出这个。也许我正在以错误的方式看待它。有任何想法吗?
ID Product
1 A
2 A
3 A
3 A
3 B
4 A
5 B
6 B
6 B
使用group by
和having
。
select id
from tbl
where product in ('A','B')
group by id
having count(distinct product) = 2
如果只有2个产品,您可以自行加入您的桌子:
SELECT A.ID, A.Product, B.Product FROM [table] A INNER JOIN [table] B ON A.ID = B.ID AND A.Product != B.Product