【问题标题】:query to get records with exact values of a field [duplicate]查询以获取具有字段精确值的记录[重复]
【发布时间】:2019-06-07 19:16:33
【问题描述】:

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

请帮助我! 谢谢

【问题讨论】:

  • 样本数据最好使用DDL + DML。请edit您的问题包括它,您当前的尝试和您想要的结果。更多详情,read this.

标签: mysql sql


【解决方案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');

【讨论】:

  • 没错,它有效!非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 2014-09-09
  • 2023-03-11
相关资源
最近更新 更多