首頁  >  文章  >  資料庫  >  MySQL實作依指定欄位自訂清單排序的詳細介紹

MySQL實作依指定欄位自訂清單排序的詳細介紹

黄舟
黄舟原創
2017-03-25 13:37:181967瀏覽

下面小編就為大家帶來一篇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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn