MySQL:选择属于所有列出的类别的项目

时间:2013-07-13 20:35:46

标签: mysql select grouping

(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)?

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