数查询返回意外的结果
问题描述:
我有这个疑问:数查询返回意外的结果
SELECT
count(*) as count ,
(3959 * acos(
cos(radians(37.774929)) * cos(radians(lat)) * cos(radians(lng) - radians(-122.419418))
+ sin(radians(37.774929)) * sin(radians(lat))
)) AS distance
FROM users
HAVING distance < 150
我认为这是要给我是谁在150英里半径的用户的数量。但相反,它给了我的用户总数。如果lat/lng不同,那么当有一些用户在那里时,它会给我零用户的数量。
任何想法如何改变这个查询,以获得150米范围内的用户数量?
谢谢!
答
你想使用WHERE子句
select count(*) as count from users WHERE (3959 * acos(cos(radians(37.774929)) * cos(radians(lat)) * cos(radians(lng) - radians(-122.419418)) + sin(radians(37.774929)) * sin(radians(lat)))) < 150
+1来自@Dirk和@Dems的回答。我的补充评论是:HAVING不是与访问别名的地方。 :-) –