美文网首页
mysql自定义排序

mysql自定义排序

作者: 帝Bug | 来源:发表于2017-02-22 14:36 被阅读148次

    大家都知道, 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自定义排序

          本文链接:https://www.haomeiwen.com/subject/xjhmwttx.html