2013-07-13 40 views
0

(MySQL) 請幫助選擇所有類別中出現的所有項目。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 OR 3所有項目ID(返回的ID 1,2)。 如何選擇1 和和 3(僅返回id 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) 

,或者如果你知道總會有那些 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 
+0

good one juergen –

相關問題