MySql 如何 Return 包含所有选定功能的所有项目

MySql How Return All Items Which Contain All Selected Features

assigned_features

feature_id      |   item_id
-----------------------------------------------
1               |   1
2               |   1
3               |   1
1               |   2
2               |   2
1               |   3

使用 mysql,我正在尝试 return 所有包含所有选定功能的项目。

例如,我希望 return 项目 feature_id = 1 和 2。这应该 return item_id 1 和 2。

或者,如果我只想检索 feature_id = 1,2 和 3 的项目,结果应该是项目 1。

我真的不知道从哪里开始。

谢谢!

您可以进行聚合:

select item_id
from assigned_features af
where feature_id in (1,2)
group by item_id
having count(distinct feature_id) = 2;

同样,您可以增加第二个示例的计数:

select item_id
from assigned_features af
where feature_id in (1,2,3)
group by item_id
having count(distinct feature_id) = 3;

但是,DISTINCT 在这里是多余的,如果 item_id 没有重复的 feature_id,那么您可以使用 count(*) = 2count(*) = 3 代替。