MySQL根据经纬度和距离查询最近的数据
[lat]:输入的纬度[lon]:输入的经度[distance]:查询距离内的数据,单位m
SELECT * FROM ( SELECT id lon, lat, vin, ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( [lat] * PI() / 180 - lat* PI() / 180 ) / 2 ), 2 ) + COS([lat] * PI() / 180) * COS(lat* PI() / 180) * POW( SIN( ( [lon] * PI() / 180 - lon* PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) AS distance FROM tableName ) AS a WHERE a.distance < [distance] ORDER BY a.distance
修改中括号"[]"处参数即可