MySQL實現(xiàn)按指定字段自定義列表排序的詳細介紹

下面小編就為大家?guī)硪黄?a href="http://m.babyishan.com/?golink=aHR0cDovL3d3dy5waHAuY24vd2lraS8xMTYwLmh0bWw=" target="_blank" rel="noopener">mysql 按指定字段自定義列表排序的實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

問題描述

大家都知道, 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 的順序排列, 該如何實現(xiàn)。 這也是很多國內(nèi)外同行經(jīng)常遇到的問題之一。

下面我們給出按表中某字段, 以我們想要的列表方式排序的解決方案。

解決方案

用”按字段排序” (ORDER BY FIELD).

語法

ORDER?BY?FIELD(`id`,?5,?3,?7,?1)

要注意的是,F(xiàn)IELD 后面是沒有空格的。

因此, 完整的 SQL 為:

SELECT?*?FROM?`MyTable`?  WHERE?`id`?IN?(1,?7,?3,?5)?  ORDER?BY?FIELD(`id`,?5,?3,?7,?1)

常見應(yīng)用

SELECT?*?FROM?`MyTable`?  WHERE?`name`?IN?('張三',?'李四',?'王五',?'孫六')?  ORDER?BY?FIELD(`name`,?'李四',?'孫六',?'張三',?'王五')

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊5 分享