Mysql多列加自定义排序
来源:互联网 发布:linux cp命令 覆盖 编辑:程序博客网 时间:2024/05/29 02:29
Mysql多列加自定义排序(order by+field())
排序要求
需要排序的字段有:部门(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_maintestORDER BY orderClass,department,team,orderLevel desc
按理说这个代码是没有问题的(其实也真的没问题),我在本地也测了好好的,可是邪门的是一模一样的代码放到服务器上去,查出的就是乱序的。搞得我跟人家说的好好的,后来就直播打脸了。
到现在也不知道是为什么,在网上查了好多,表的编码格式应该没有错。还有的说是因为有中文,可是我这个职级字段的值就是有中文的。没办法就只能换另一种sql方案了。
方案二
同样的要自定义职级的排序,但这次不是在查询的时候而是在排序中直接用field()函数自定义顺序。
SELECT userName,department, team,professionalClass, assesser,finalLevelFROM ws_performanceassess_maintestORDER BY if(professionalClass='管理',0,1),FIELD(department,'智能软件业务部','DVB产品业务部','研发设计部','综合测试部','预研产品业务部','IT部','自动化业务部'),team,FIELD(a.professionalClass,'高级工程师','中高级工程师','中级工程师','初级工程师A','初级工程师B','初级工程师C')
这次就没问题了,本地和服务器都显示出来了。这种方式特别方便,还可以自己决定部门排序的先后顺序。
欧了,就这样。
阅读全文
0 0
- Mysql多列加自定义排序
- mysql 自定义排序顺序
- mysql实现自定义排序
- MySql自定义排序
- MYSQL自定义排序
- mysql 自定义排序
- MySQL自定义排序
- mysql 自定义排序规则
- mysql自定义排序
- mysql中字段自定义排序
- MySQL自定义排序函数FIELD()
- MySQL自定义排序函数FIELD()
- MySQL自定义排序函数FIELD()
- MySQL自定义排序函数FIELD()
- mysql 中自定义变量排序
- MySQL自定义排序函数FIELD()
- MySQL自定义排序去重
- MySQL自定义排序函数 field()
- POJ2785-4 Values whose Sum is 0
- 如何解决同一URL 地址,服务器图片更变了,客户端怎么判断是否需要更变
- 微信小程序快递鸟查物流
- Node.js的回调函数以及事件循环
- mybatis 智能标签+多条件查询
- Mysql多列加自定义排序
- iOS开发技巧。
- 关于工作激情与项目管理的思考
- Linux下配置JDK、Tomecat
- 【扩展】Freemarker模板遍历集合实现下载word部分文字隐藏
- hdu1176—免费馅饼(dp)
- java 实现word 转PDF (采用第三方技术 IText、Poi、Jsoup)
- POJ. 2253 Frogger (Dijkstra )
- jquery获取span标签下的第一个span子标签内容