菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
2717
0

MySQL 查询中保留 IN 中的顺序

原创
05/13 14:22
阅读数 2519

Mysql 查询中保留 IN 中的顺序

今天碰到一个自己之前挖的坑,数据库设计不合理,导致排序不好搞。

  1. 需求:员工入职步骤中每一步的人员将未分配(未移交给下一步)员工置顶展示;

    • 表结构如下:

    Mysql 查询中保留 IN 中的顺序
    Mysql 查询中保留 IN 中的顺序

    • 需求实例: current『当前步骤』都为 2『培训部』 的所有员工,将还没有分配给 3『设备分发部』的员工置顶,目前解决方式是根据 community_end『培训部结束时间戳,即为设备分发部的开始时间戳』正序排列,此处则引出标题 ~
  2. 解决方案:

    • 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;
  3. 事后反思:往后设计数据库时,应该尽可能多的考虑到不同的查询场景,根据查询场景设计相应的数据表;

  4. 如果各位老师还有更好的解决方案,望不吝赐教哦 ~

    原文链接:【MySQL】查询保持 IN 中的顺序

发表评论

0/200
2717 点赞
0 评论
收藏
为你推荐 换一批