在写sql的过程中会遇到一种情况,就是多维度组合排序。
比如任务的排序有2个维度,维度1:紧急、不紧急;维度2:领取、未领取,要求按照的如下规则排序:
紧急未领取>紧急领取>不紧急未领取>不紧急领取
sql中的order by 只能先按照一种维度进行排序,然后再按照另外一种维度进行排序。
方法一:
使用JAVA中的compareTo进行编码排序,但这种方式操作复杂,并且速度,容易出错。
方法二:
给维度划分权重,比如维度1(status1)-->紧急4分、不紧急2分;维度2(status2)-->领取1分,未领取3分
这样排序时就可以这样写
order by sum(status1 + status2) 以权重的和来进行排序处理。