gpt4 book ai didi

mysql - 如何在MySQL中使用GROUP By和HAVING

转载 作者:可可西里 更新时间:2023-11-01 08:29:20 24 4
gpt4 key购买 nike

前两个查询工作正常,第三个查询运行但在应该有结果时没有返回任何结果。我怎样才能得到第三个带回结果。在我看来,GROUP BYHAVING 不能一起工作。

第二个查询返回 32 个事件状态和 7 个待定状态,因此第三个查询应该返回第二个查询的摘要,但事实并非如此。

SELECT COUNT(DISTINCT MLSNumber) AS TOTAL, `Status`
FROM Residential
WHERE PropertyType='Single Family' AND Status IN ("Active", "Pending")
GROUP BY `Status`;

SELECT MLSNumber, `Status`,
( 3959 * acos( cos( radians(21.380936) ) * cos( radians( Latitude ) )
* cos( radians( Longitude ) - radians(-157.757438) ) + sin( radians(21.380936) )
* sin(radians(Latitude)) ) ) AS distance
FROM Residential
WHERE PropertyType='Single Family' AND Status IN ("Active", "Pending")
HAVING distance < 2;

SELECT COUNT(DISTINCT MLSNumber) AS TOTAL, `Status`,
( 3959 * acos( cos( radians(21.380936) ) * cos( radians( Latitude ) )
* cos( radians( Longitude ) - radians(-157.757438) ) + sin( radians(21.380936) )
* sin(radians(Latitude)) ) ) AS distance
FROM Residential
WHERE PropertyType='Single Family' AND Status IN ("Active", "Pending")
GROUP BY `Status`
HAVING distance < 2;

最佳答案

当您使用 GROUP BY 时,您需要对所有未包含在 GROUP BY 子句中的字段使用聚合函数。

我认为您想要的是将计算出的距离作为 where 子句的一部分并去掉 HAVING 子句。

WHERE PropertyType='Single Family' AND Status IN ("Active", "Pending")  
AND ( 3959 * acos( cos( radians(21.380936) ) * cos( radians( Latitude ) ) * cos( radians( Longitude ) - radians(-157.757438) ) + sin( radians(21.380936) ) * sin(radians(Latitude)) ) ) < 2

关于mysql - 如何在MySQL中使用GROUP By和HAVING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31190804/

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