测试数据
按照主键反排序
SELECT * FROM user_info ui ORDER BY ui.id DESC;
按照主键反排序,但是"status = 4"的数据排在最后
SELECT * FROM user_info ui ORDER BY IF (ui.`status`=4,1,0),ui.id DESC;
查看结果集
"status = 4"的数据在后面,其他的数据在前面,且都按照ID进行了反排序
注意:ORDER BY IF并不是一个SQL函数,而是ORDER BY与IF()函数组合使用
IF()函数文档
https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_if
上面的SQL示例中,1和0可以灵活使用
IF (ui.`status`=4,99,9)#4在后面
IF (ui.`status`=4,9,99)#4在前面
最后,感谢搭档"老张"提供的思路!