0

COUNT(*)在下面的查询中是选择表中行数的计数,users而不是distance小于 50 的行数。

请您告诉我为什么查询选择的是表中的行users数而不是距离小于 50 的行数?

提前致谢。

SELECT COUNT(*), ( 6371 * ACOS( COS( RADIANS( 51.61050836267012 ) ) * COS( RADIANS( latitude ) ) * COS( RADIANS( longitude ) - RADIANS( - 0.23701071739196777 ) ) + SIN( RADIANS( 51.61050836267012 ) ) * SIN( RADIANS( latitude ) ) ) ) 
AS distance
FROM  `users` 
AS `u`
HAVING distance <=50
4

3 回答 3

2

HAVING应该和GROUP BY表达有关。要将行数限制为给定条件,请使用WHERE distance <= 50

于 2012-05-27T17:30:31.553 回答
0

HAVING适用于聚合值(例如 sum(column)具有特定条件)您应该在您的情况下使用WHERE而不是HAVING

于 2012-05-27T17:32:14.600 回答
0

have 子句不会像 where 子句对 count 函数那样过滤行。尝试改用子查询。

于 2012-05-27T17:34:46.157 回答