0

(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 OR 2 OR 3 的所有项目 ID(返回 ID 1、2)。我应该如何选择类别 1 AND 2 AND 3 中存在的项目(仅返回 id 1)?

4

1 回答 1

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 s 使用

SELECT item_id 
FROM item_category 
group by item_id 
having count(distinct category_id) = 3

或者如果您category_id的表中有很多 s 但只想要至少具有类别的项目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
于 2013-07-13T20:38:42.790 回答