我有一个2列表farmer_crops,用来存储农民和他们种植的作物之间的关系。农民可以种一种或多种作物。下面的查询向我提供了不同的农民和他们种植的作物总量。我怎样才能得到种植农作物的农民总数(my_crops > 1)?
select distinct farmer_id, count(crop_id) as my_crops
from farmer_crops
group by farmer_id
使用GMB的提示编辑,下面的查询给我总共2330行,这是正确的。
SELECT farmer_id, count(crop_id) as my_crops
FROM farmer_crops
GROUP BY farmer_id
HAVING count(crop_id) > 1
然而,我真正想要的是下面的查询,只有总数,但是total_farmers列返回数字8330,这是错误的。
SELECT count(farmer_id) as total_farmers
FROM farmer_crops
HAVING count(crop_id) > 1
发布于 2019-03-08 00:01:08
聚合表达式的条件不能在WHERE
子句中使用。您需要使用HAVING
来代替:
SELECT farmer_id, count(crop_id) as my_crops
FROM farmer_crops
GROUP BY farmer_id
HAVING count(crop_id) > 1
与WHERE
子句不同,HAVING
子句位于GROUP BY
子句之后。
注:SELECT DISTINCT
通常对GROUP BY
没有意义,我把它去掉了。
https://stackoverflow.com/questions/55054715
复制相似问题