当前位置: 首页 > 科技观察

说说SQL自定义排序

时间:2023-03-18 17:44:27 科技观察

今天就介绍几种解决此类问题的方法。我们先看示例表:这个表的数据是随机输入的,我们希望按照我们指定的顺序输出如下:注意:这里既不按照人口数排序,也不按照人数排序GDP的大小,也不是按照城市拼音的首字母,而是按照我们自己的意愿排序。方法1ORDERBYCASEWHEN通过在ORDERBY中对想要的输出顺序使用CASEWHEN,我们将文本转换为可排序的数字进行间接排序。具体代码如下:*citysCity=City=City=City=City=这种方式对于比较简单的查询很容易实现自定义排序,但是在比较复杂的场景下有局限性。方法二UNIONALL使用UNIONALL的方法比较容易理解,但是代码写起来会比较复杂,如下:a.City,a.Population,a.GDP(,*CitysCity=ALL,*CitysCity=ALL,*CitysCity=ALL,*CitysCity=ALL,*CitysCity=)aa.Num我们通过添加一列自定义Num来为查询到的每一行记录赋值。这个值就是我们输出的顺序,然后通过子查询就可以对这个自定义的Num进行排序。常用于比较复杂的查询语句,需要自定义排序的场景。方法三创建临时表与上面两种方法相比,创建临时表的方法可以大大减少代码量。我们可以先按照我们要输出的顺序创建一个临时表Temp,如下:当我们需要自定义排序输出时,直接关联临时表即可,具体代码如下:a.*citysaTempba.City=与上面两种方式相比,b.Cityb.Num只需要更新临时表中的顺序,可以适应各种场景。