今天碰到一個自己之前挖的坑,資料庫設計不合理,導致排序不好搞。
-
需求:員工入職步驟中每一步的人員將未分配(未移交給下一步)員工置頂展示;
- 表結構如下:
- 需求例項:
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;
-
事後反思:往後設計資料庫時,應該儘可能多的考慮到不同的查詢場景,根據查詢場景設計相應的資料表;
-
如果各位老師還有更好的解決方案,望不吝賜教哦 ~