MySQL 按指定字段自定义列表排序的实现
问题描述
大家都知道,MySQL中按某字段升序排列的SQL为(以id为例,下同):
SELECT*FROM`MyTable`
WHERE`id`IN(1,7,3,5)
ORDERBY`id`ASC
降序排列的SQL为:
SELECT*FROM`MyTable`
WHERE`id`IN(1,7,3,5)
ORDERBY`id`DESC
有时以上排序并不能满足我们的需求。例如,我们想要按id以5,3,7,1的顺序排列,该如何实现。这也是很多国内外同行经常遇到的问题之一。
下面我们给出按表中某字段,以我们想要的列表方式排序的解决方案。
解决方案
用"按字段排序"(ORDERBYFIELD).
语法
ORDERBYFIELD(`id`,5,3,7,1)
要注意的是,FIELD后面是没有空格的。
因此,完整的SQL为:
SELECT*FROM`MyTable`
WHERE`id`IN(1,7,3,5)
ORDERBYFIELD(`id`,5,3,7,1)
常见应用
SELECT*FROM`MyTable`
WHERE`name`IN('张三','李四','王五','孙六')
ORDERBYFIELD(`name`,'李四','孙六','张三','王五')
以上这篇MySQL按指定字段自定义列表排序的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。