1

我有一个条目表和一个类别表,其中一个连接表将两者连接起来,我想要做的是选择与一组特定类别匹配的所有条目。

例如。所有具有 A 类和 B 类的条目

条目

entry_id | title
------------------
1        | Entry 1
2        | Entry 2
3        | Entry 3

类别

category_id | name
------------------
1           | A
2           | B
3           | C

entry_categories

entry_id | category_id
-----------------------
1        | 1
1        | 2
2        | 1
2        | 2
2        | 3
3        | 1
3        | 3

如果我这样做,我会得到所有 3 个条目,因为它们每个都匹配至少一个类别,但我真正想要的是条目 1 和条目 2,而不是条目 3。

SELECT *
FROM entry_categories AS ec
INNER JOIN entries AS e ON ec.entry_id = e.entry_id
WHERE ec.category_id IN(1, 2)
GROUP BY e.entry_id
4

1 回答 1

5

HAVING COUNT(ec.Categor_id) = 2像这样添加:

SELECT *
FROM entry_categories AS ec
INNER JOIN entries AS e ON ec.entry_id = e.entry_id
WHERE ec.category_id IN(1, 2)
GROUP BY e.entry_id
HAVING COUNT(ec.Category_id) = 2
于 2012-12-10T15:29:11.670 回答