我有一个包含以下列的表:
id | partner_id | product_id
-----------------------------
1 | 2 | 71
2 | 2 | 83
3 | 3 | 71
4 | 4 | 83
5 | 4 | 71
6 | 5 | 22
7 | 4 | 55
我只想要合作伙伴有83号和71号产品的生产线
这样地:
id | partner_id | product_id
-----------------------------
1 | 2 | 71
2 | 2 | 83
4 | 4 | 83
5 | 4 | 71
非常感谢你的帮助:-)
最佳答案
您可以使用exists
:
select t.*
from t
where t.product_id in (71, 83) and
exists (select 1
from t t2
where t2.partner_id = t.partner_id and
t2.product_id in (71, 83) and
t2.product_id <> t.product_id
);
不过,如果你只想要合伙人的话,这可能也是有意义的。在这种情况下,您可以使用
group by
:select partner_id
from t
where product_id in (71, 83)
group by partner_id
having count(*) = 2; -- assuming no duplicates
关于mysql - 两列的SQL查询过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58100692/