如何编写一个查询来查找一列中的2个特定值与另一列中的1个值的匹配位置?我用的是mysql数据库。
例如:

| test_id | animal_type | classification_id |
----------------------------------------------
    1          cat             456
    2          dog             456
    3          mongoose        456
    4          cat             123

我想编写一个查询,查找表中出现的两行分类ID为“123”和“456”的动物类型。
如果我写下以下内容,它就不起作用,因为我不知道如何在这个查询中包含动物类型。
SELECT *
FROM test_table
WHERE classification_id = '123' AND classification_id = '456'

如何编写查询以选择同时具有123和456作为特定动物类型的分类ID的所有行?

最佳答案

您可以使用:

SELECT animal_type
FROM test_table
WHERE classification_id IN (123, 456)
GROUP BY animal_type
HAVING COUNT(DISTINCT classification_id) = 2;

如果需要整行:
SELECT *
FROM test_table
WHERE animal_type IN (SELECT animal_type
                      FROM test_table
                      WHERE classification_id IN (123, 456)
                      GROUP BY animal_type
                      HAVING COUNT(DISTINCT classification_id) = 2)

关于mysql - SQL查询为1值匹配2行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46607998/

10-11 02:49