下面小編就為大家帶來一篇MySQL 依指定欄位自訂清單排序的實作。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧
問題描述
#大家都知道, MySQL 中按某字段升序排列的SQL 為(以id 為例,下同):
SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ORDER BY `id` ASC
#降序排列的SQL 為:
SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ORDER BY `id` DESC
有時以上排序並不能滿足我們的需求。 例如, 我們想要按 id 以 5, 3, 7, 1 的順序排列, 該如何實現。 這也是許多國內外同行常遇到的問題之一。
下面我們給出按表中某字段, 以我們想要的列表方式排序的解決方案。
解決方案
用"依欄位排序" (ORDER BY FIELD).
語法
ORDER BY FIELD(`id`, 5, 3, 7, 1)
要注意的是,FIELD 後面是沒有空格的。
因此,完整的SQL 為:
SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ORDER BY FIELD(`id`, 5, 3, 7, 1)
常見應用程式
##################################### ##SELECT * FROM `MyTable` WHERE `name` IN ('张三', '李四', '王五', '孙六') ORDER BY FIELD(`name`, '李四', '孙六', '张三', '王五')
以上是MySQL實作依指定欄位自訂清單排序的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!