Mysql
查询中保留 IN
中的顺序
今天碰到一个自己之前挖的坑,数据库设计不合理,导致排序不好搞。
-
需求:员工入职步骤中每一步的人员将未分配(未移交给下一步)员工置顶展示;
- 表结构如下:
- 需求实例:
current
『当前步骤』都为2
『培训部』 的所有员工,将还没有分配给3
『设备分发部』的员工置顶,目前解决方式是根据community_end
『培训部结束时间戳,即为设备分发部的开始时间戳』正序排列,此处则引出标题 ~
-
解决方案:
Order by field();
- 用和不用的
SQL
语句贴上:SELECT * FROM `user_temporary` WHERE ( `id` IN ('29500','29582','29583','28299') ) LIMIT 0, 20; SELECT * FROM `user_temporary` WHERE ( `id` IN ('29500','29582','29583','28299'') ) ORDER BY field(id,29500,29582,29583,28299) LIMIT 0, 20;
-
事后反思:往后设计数据库时,应该尽可能多的考虑到不同的查询场景,根据查询场景设计相应的数据表;
-
如果各位老师还有更好的解决方案,望不吝赐教哦 ~
© 著作权归作者所有
举报
发表评论
0/200