为了账号安全,请及时绑定邮箱和手机立即绑定

MYSQL如何不按数字顺序排序?

MYSQL如何不按数字顺序排序?

PHP
慕码人2483693 2019-03-14 08:56:25
代码如下 SELECT maps, case when maps then ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( 32.640351 * PI() / 180 - substring_index(maps, ",", - 1) * PI() / 180 ) / 2 ), 2 ) + COS(32.640351 * PI() / 180) * COS( substring_index(maps, ",", - 1) * PI() / 180 ) * POW( SIN( ( 117.013281 * PI() / 180 - substring_index(maps, ",", 1) * PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) else '未知距离' end distance FROM list ORDER BY distance ASC 目前我有一个list表,里面有个maps字段是用来存放商家设置的经纬度xx,xx,并在查询过程中,与当前位置的经纬度计算出距离,所以就有了distance这个新字段,问题是,当前有的商家设置了经纬度,有的没有设置。 于是使用case when maps then...else '未知距离' end distance区分了如果商家没有设置经纬度显示未知距离有设置的商家显示计算好的距离,当前需要解决的问题就是,我按这个方法区分后,就会造成排序无法按照距离大小排序,而变成了按数字顺序排序。如下 序号 距离 1 1050 2 1160 3 35 4 362500 5 3700 如何才能按照数字正常排序,而字符串未知距离放在数字距离下面呢?谢谢!~
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

把"未知距离"用一个特殊的数字替代,比如9999999999

查看完整回答
反对 回复 2019-03-18
  • 1 回答
  • 0 关注
  • 535 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信