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

时间:2019-02-01 08:43:45

标签: mysql sql database select where

assigned_features

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

使用mysql,我试图返回包含所有选定功能的所有项目。

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

或者,如果我只希望检索feature_id = 1,2和3的项目,则结果应产生项目1。

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

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以进行聚合:

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