查询以获取具有字段精确值的记录

时间:2019-01-13 16:11:41

标签: mysql sql

我有一个像这样的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

请帮助我! 谢谢

1 个答案:

答案 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');