对数据库查询结果进行排序,大家都知道用 order by 字段名称1,字段名称2…,再结合 DESC/ASC进行倒序升序排序,这里的字段数据参与排序的时候是按照 ASCII码 进行的。但是现在有个需求,按照 7>4>9>5>1>6>3>8>2 排序,使用上面的方法肯定不行,那么怎么办?我们可以使用 order by 自定义字段排序,即可解决问题。例如:下面的规则:
Mysql
order by 结合 field(排序字段,value1,value2,…) 定义数据排列顺序,排在前面的优先级高,后面依次。我们看一下在工作中的使用效果:
图中可以看出,自定义排序字段是按照 7>4>9>5>1>6>3>8>2 进行的,实际查询出来的结果也是 4 在1 的前面,1在3的前面,3在2的前面,到此,解决了需求问题;需要注意,这种方式适用于数值比较规则的几个,如果成千上万个值不一样,那就不适用。
Oracel
orcale 实现自定义字段排序与上面类似,将field 换成 decode,同时指定每个值的序号,如:order by decode(排序字段,value1,1,value2,2,…)。
Order By 自定义字段排序规则
于 2023-09-25 20:04:03 首次发布