MySQL自定义排序:多列自定义排序 order by field()
Mysql自定义排序 order by+field()语法:自定义排序 +多字段排序ORDER BY FIELD(`STATUS`,'1001','1002','1003') desc, ADD_DATE desc单个字段降序 /升序 排序:select * from table order by id desc;select * from table order b...
Mysql自定义排序 order by+field()
语法:
order by field(value,str1,str2,str3,str4,strn)
示例:
select * from driver_log order by field(name,‘zhangsan’,‘lisi’,‘wangwu’);
自定义排序 + 多字段排序
ORDER BY FIELD(`STATUS`,'1001','1002','1003') desc, ADD_DATE desc
单个字段降序 / 升序 排序:
select * from table order by id desc;
select * from table order by id asc;
多个字段排序:
select * from table order by id desc,name desc;
多字字段排序只需要添加多个排序条件,并且每个排序的条件之前用逗号分开。
order by id desc,name desc; 表示先按照id降序排序,再按照name降序排序。
order by id desc,name asc; 表示先按照id降序排序,再按照name升序排序。
例一:
排序要求:需要排序的字段有:部门(department),小组(team),职级(professionalClass)。
排序:
1.第一部分为职级值等于‘管理’的数据,排在最前面。
2.第二部分为,职级除了‘管理’之外剩下的数据。将这些数据先按部门排序,同一个部门的放在一起;
再按小组排序,把同部门同小组的放在一起;然后再按职级排序,职级高的放在前面低的放在后面。
方案一:
由于职级的值是没有顺序规则的,所以要在sql查询的时候自定义顺序再排序。
SELECT
userName,department,
team,professionalClass,
assesser,finalLevel,
case professionalClass when '管理' THEN 1 else 2 end as orderClass,
case professionalClass
when '初级工程师C' then 1
when '初级工程师B' then 2
when '初级工程师A' then 3
when '中级工程师' then 4
when '中高级工程师' then 5
when '高级工程师' then 6
else 0 end as orderLevel
FROM ws_performanceassess_maintest
ORDER BY orderClass,department,team,orderLevel desc
按理说这个代码是没有问题的(其实也真的没问题),我在本地也测了好好的,可是邪门的是一模一样的代码放到服务器上去,查出的就是乱序的。搞得我跟人家说的好好的,后来就直播打脸了。
到现在也不知道是为什么,在网上查了好多,表的编码格式应该没有错。还有的说是因为有中文,可是我这个职级字段的值就是有中文的。没办法就只能换另一种sql方案了。
方案二:
同样的要自定义职级的排序,但这次不是在查询的时候而是在排序中直接用field()函数自定义顺序。
SELECT
userName,department,
team,professionalClass,
assesser,finalLevel
FROM ws_performanceassess_maintest
ORDER BY if(professionalClass='管理',0,1),
FIELD(department,'智能软件业务部','DVB产品业务部','研发设计部','综合测试部','预研产品业务部','IT部','自动化业务部'),
team,
FIELD(a.professionalClass,'高级工程师','中高级工程师','中级工程师','初级工程师A','初级工程师B','初级工程师C')
这次就没问题了,本地和服务器都显示出来了。这种方式特别方便,还可以自己决定部门排序的先后顺序。
————————————————
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)