我有一个像这样的mysql表:
id_doc | id_category
1 a
1 c
1 f
2 a
2 g
3 a
3 b
3 f
4 h
我需要查询以提取类别为“ a”和“ f”的文档。
示例:
id_doc
1
3
请帮助我! 谢谢
答案 0 :(得分:1)
汇总并使用HAVING
检查文档中不同组的数量是否等于2。
SELECT id_doc
FROM document_category
WHERE id_category IN ('a',
'f')
GROUP BY id_doc
HAVING count(DISTINCT id_category) = 2;
或者,如果您有一个文档表,请使用两个EXISTS
。
SELECT d.id_doc
FROM document d
WHERE EXISTS (SELECT *
FROM document_category dc
WHERE dc.id_doc = d.id_doc
AND dc.id_category = 'a')
AND EXISTS (SELECT *
FROM document_category dc
WHERE dc.id_doc = d.id_doc
AND dc.id_category = 'f');