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。
我真的不知道从哪里开始。
谢谢!
答案 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(*) = 2
或count(*) = 3
。