MySql排序
单列排序
- 默认升序
order by 列名; - 升序
order by 列名 asc; - 降序
order by 列名 desc;
多列排序
- 默认先按照列名1升序,再按照列名2升序
order by 列名1,列名2; - 先按照列名1升序,再按照列名2升序
order by 列名1 asc,列名2 asc; - 先按照列名1降序,再按照列名2降序
order by 列名1 desc,列名2 desc;
自定义排序
假如表中有一列state(状态),该列的值有0、1、2、3、4,现在需要按照1、0、2、4、3进行排序所以自定义排序order by field(state,1,0,2,4,3)
- 默认升序1,0,2,4,3
order by field(state,1,0,2,4,3); - 升序1,0,2,4,3
order by field(state,1,0,2,4,3) asc; - 降序3,4,2,0,1
order by field(state,1,0,2,4,3) desc;
自定义排序+多列排序
- 先state按照1,0,2,4,3升序排序,再按照id升序
order by field(state,1,0,2,4,3) asc,id asc; - 先state按照3,4,2,0,1降序排序,再按照id降序
order by field(state,1,0,2,4,3) desc,id desc;
条件排序
- 把state=1的排在最前面,其他state列按自然顺序排列
order by IF(state=1,0,1); - 把state=1的排在最后面,其他state列按自然顺序排列
order by IF(state=1,0,1) desc; - 把state=1的排在最前面,其他state列升序
order by IF(state=1,0,1),state asc;
条件排序+多列排序
- 先把state=1的排最前面,再根据id升序
order by IF(state=1,0,1) asc,id asc; - 先把state=1的排最后面,再根据id升序
order by IF(state=1,0,1) desc,id asc;
本人菜鸟,今天刚好学习到这个所以就记录了下来,排序还有其他方式请大佬指教,有错误的地方也请大佬指正