繁体   English   中英

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

[英]MySQL: Select items that belong to all listed categories

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

要获取具有所有类别的商品,请使用

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM