普通的sql只能对一个字段进行简单的大小排序,如下:
SELECt * FROM banner ORDER BY `status`, sequence ASC;
这里我们对banner这张表中的status字段先进行排序,然后对排序后的子集再对sequence字段进行排序。
但这样排序的话,我的status的排序顺序就成了0,1,2的顺序了,如何达到1,0,2呢? 就需要使用带数据库的函数,如下:
Oracle(decode函数):SELECt * FROM banner ORDER BY decode( `status`, '别名1', 1, '别名2', 0, '别名3', 2 ), sequence ASC;Mysql(field函数):
SELECt * FROM banner ORDER BY field( `status`, 1, 0, 2 ), sequence ASC;效果如下:
以上!感谢我的专属DBA刘某~



