自定义排序 mysql order by in / if / field

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,小明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值