我有一个条目表和一个类别表,它们之间有一个连接表,我要做的是选择与特定类别集匹配的所有条目。
所有A、B类条目
条目

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

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

入门级
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

最佳答案

添加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

关于mysql - 选择与联接表中所有选定行匹配的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13803910/

10-14 00:38