例如,假设我有一个名为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
我只想查询我想做的查询。
答案 0 :(得分:0)
您可以使用GROUP BY
和HAVING
来完成
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