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

代码如下

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

如何才能按照数字正常排序,而字符串未知距离放在数字距离下面呢?谢谢!~

慕码人2483693
浏览 536回答 1
1回答

慕尼黑8549860

把"未知距离"用一个特殊的数字替代,比如9999999999
打开App,查看更多内容
随时随地看视频慕课网APP