mysql 根据查询计算as的字段进行排序,返回的排序数据不对
下面展示一些
sql语句片段
。
SELECT c.*,
(FORMAT ((2 * asin (SQRT(POWER(SIN(((lat * PI() / 180.0)
- (22.511885 * PI()/180.0))/2),2)
+ COS(lat * PI()/180.0)
* COS(22.511885 * PI()/180.0)
* POWER(SIN((lng * PI()/180.0
- 113.925978 * PI()/180.0)/2),2))))
* 6378.137,2)) AS distance
FROM
sys_counter c
ORDER BY distance
limit 1,5
逻辑代码块的作用是计算经纬度的距离。
重点是我排序数据乱了,原因是排序字段必须为数字不能为字符串,FORMAT保留后面两位小数后的数值为字符串,所以排序就有问题。
解决方案: 将 FORMAT改为ROUND函数就可以,保留两位小数后为数值而不是字符串。就解决啦