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(*) = 2
或 count(*) = 3
代替。
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(*) = 2
或 count(*) = 3
代替。