(MySQL的) 请帮助选择所有类别中的所有项目。
Structure: item_category (item_id, category_id)
1 1
1 2
1 3
2 1
2 2
此查询:
SELECT item_id FROM item_category WHERE category_id IN (1,2,3)
选择属于类别1的所有项ID OR 2 OR 3(返回ID 1,2)。 我应该如何选择类别1中的项目 AND 2 AND 3(仅返回ID 1)?
答案 0 :(得分:3)
要获取所有类别的项目,请使用
SELECT item_id
FROM item_category
group by item_id
having count(distinct category_id) = (select count(distinct category_id)
from item_category)
或者如果你知道总有那些 3 category_id
使用
SELECT item_id
FROM item_category
group by item_id
having count(distinct category_id) = 3
或者如果您的表中有很多category_id
,但只想要至少包含类别1,2,3
的项目,请使用
SELECT item_id
FROM item_category
where category_id in (1,2,3)
group by item_id
having count(distinct category_id) = 3