gpt4 book ai didi

mysql - 如何在 where 子句中包含聚合列?

转载 作者:可可西里 更新时间:2023-11-01 08:23:32 25 4
gpt4 key购买 nike

我有一个包含 2 列的表 farmer_crops,用于存储农民与他们种植的裁剪之间的关系。农民可以种植一种或多种裁剪。下面的查询给了我不同的农民和他们种植的总裁剪。如何获得种植农裁剪的农民总数大于 1 (my_crops > 1)?

select distinct farmer_id, count(crop_id) as my_crops 
from farmer_crops
group by farmer_id

[edit] 使用 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

最佳答案

聚合表达式的条件不能用在 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 没有意义,我删除了它。

关于mysql - 如何在 where 子句中包含聚合列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55054715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com