【发布时间】:2015-07-02 17:16:47
【问题描述】:
前两个查询工作正常,第三个运行但应该有结果时什么也没带回来。我怎样才能得到第三个带回结果。在我看来,GROUP BY 和 HAVING 没有一起工作。
第二个查询返回 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;
【问题讨论】:
-
第二个应该使用
WHERE。HAVING仅用于聚合。