我有一个带有下表的MySQL数据库
int - id
float 2,6 - long
float 2,6 - lat
int - radius
我想创建一个返回ID&距给定位置的距离(长和纬度)
我找到了以下代码:
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) *
cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) *
sin( radians( lat ) ) ) ) AS distance FROM markers
HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
我想更改此查询以仅返回计算长度小于半径的行(我的表中的列) 用半径替换25不起作用。 有没有办法在不使用两个SQL查询的情况下实现这一目标?
答案 0 :(得分:1)
出现问题,因为结果distance
位于 float 中,而radius是整数数据类型,因此您需要将CAST半径设置为float。尝试以下
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) *
cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) *
sin( radians( lat ) ) ) ) AS distance FROM markers
HAVING distance < CAST (radius AS float) ORDER BY distance LIMIT 0 , 20;
快乐帮助:)