计数查询返回意外结果

Gen*_*nik 3 mysql sql

我有这个问题:

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米半径范围内的用户数?

谢谢!

Dir*_*irk 6

您想使用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)