2012-12-03 23 views
3

我有以下的數據庫有2列:MySQL的:選擇具有類別ID的所有帖子= 2和3

posts id category id 
1   2 
2   1 
1   3 
3   3 
3   2 
4   5 

我需要一個查詢時提取所有帖子ID的是在第二和第三類 這意思是:id爲帖子:1和3

+0

見有超過10種方法來實現這一點(性能測試)一個問題:** [如何篩選SQL導致了一對多,通過關係] (http://stackoverflow.com/questions/7364969/how-to-filter-sql-results-in-a-has-many-through-relation)** –

回答

5

選擇所有帖子ID的是在2類和3:

SELECT posts_id 
FROM posts 
WHERE categoryId IN (2, 3) 
GROUP BY posts_id 
HAVING COUNT(distinct categoryId) = 2; 

來選擇關聯只只交的id,而不是任何其他:

SELECT posts_id 
FROM posts 
GROUP BY posts_id 
HAVING SUM(categoryId <> 5) = 0; 
+0

非常感謝你..它爲我做了工作。 我還有一個問題,其.. ..它關於同一個表... 我如何才能選擇僅與類別ID 5相關的帖子ID,而不是其他任何其他ID。 –

+0

查看我更新的答案。 –

+1

在第一個查詢中,'SELECT posts_id,category_id'應該只是'SELECT posts_id' –

0
SELECT post_id, category_id 
FROM posts 
WHERE category_id IN (2, 3) 
GROUP BY post_id 
ORDER BY category_id; 
+0

非常感謝你..它爲我做了工作。 我還有一個問題,其.. ..它關於同一個表... 我如何才能選擇僅與類別ID 5相關的帖子ID,而不是其他任何其他ID。 –

+0

SELECT post_id FROM posts WHERE category_id = 5; –

相關問題