我们经常会遇到这样一个问题,某个列的可能值为 1, 2, 3。现在需要按照 2, 1, 3 的顺序排序,该怎么办呢?
MySql中可以:
select * from my_table where code in(1, 2, 3) order by field(code, 2, 1, 3)
DB2中有个函数decode,用法为
decode(column, case1, value1, case2, value2,..., caseN, valueN, default)
其中,column 表示某个列,caseN和valueN表示当值为caseN时,返回valueN,默认值为default。
这样,可以利用decode给列按照指定的顺序排序
select * from my_table where code in(1, 2, 3) order by decode(code, 2, 1, 1, 2, 3)
注意: 此方法无法使用索引排序,可能会有性能问题