mysql版本:5.7.20
表及数据如下:
create table t_user
(
id int null,
name char(100) null
);
INSERT INTO test.t_user (id, name) VALUES (7, '小明');
INSERT INTO test.t_user (id, name) VALUES (3, '小红');
INSERT INTO test.t_user (id, name) VALUES (4, '小军');
INSERT INTO test.t_user (id, name) VALUES (0, '李白');
表数据
==========
7,小明
3,小红
4,小军
0,李白
1.1.自定义排序 order by in
将符合条件的行放在结果集的最后,但是符合条件的行之间无序。
select * from t_user order by id in (3,4,7);
=====结果=====
0,李白
7,小明
3,小红
4,小军
1.2.自定义排序2
mysql IF(expr1,expr2,expr3) 表达式是相当于一个三元表达式(expr1?expr2 :expr3 )。
IF表达式支持嵌套。
这个IF表达式,中可以出现任意字段,所以能够表达任意复杂的排序规则,比FIELD更强大。
select * from t_user order by if(id=0,0,if(id=3,1,if(id=4,2,if(name='小红',3,4))));
=====结果=====
0,李白
3,小红
4,小军
7,小明
1.3.自定义排序3
FIELD(columnName,val1,val2...valn),按照指定的值来排序。
select * from t_user order by field(id,0,3,4,7);
=====结果=====
0,李白
3,小红
4,小军
7,小明