我有这个问题:
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
Run Code Online (Sandbox Code Playgroud)
我以为它会给我半径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
Run Code Online (Sandbox Code Playgroud)