如何在B列中找到两个共享A列的值

时间:2018-09-19 01:50:30

标签: mysql sql

例如,假设我有一个名为eats的表,其中包含动植物列。

我该如何查询吃植物1和植物2的动物?

我似乎能做的最好的事情是找回plant1和plant2的所有实例,但我不知道如何制作它,因此两者都是同一个动物。

SELECT animal
FROM eats e
WHERE e.plant = "plant1" AND e.plant = "plant2"

因此,如果返回

horse   plant 1
pig     plant 1
horse   plant 2

我只想查询我想做的查询。

1 个答案:

答案 0 :(得分:0)

您可以使用GROUP BYHAVING来完成

SELECT count(distinct e.plant) as cnt,animal FROM eats e
WHERE e.plant IN('plant1','plant2')
GROUP BY e.animal HAVING cnt = 2

要进一步查询,您可以执行以下操作:

   SELECT e1.* FROM eats e1
   JOIN 
  (
    SELECT count(distinct e.plant) as cnt,animal FROM eats e
    WHERE e.plant IN('plant1','plant2')
    GROUP BY e.animal HAVING cnt = 2
) e2 ON e2.animal=e1.animal