美文网首页
MySQL之ORDER BY同一个字段,不同值排序

MySQL之ORDER BY同一个字段,不同值排序

作者: 747大雄 | 来源:发表于2019-10-22 18:21 被阅读0次

MySQL之ORDER BY同一个字段,不同值排序

通常情况下,在MySQL中我们可以使用ORDER BY对一个或多个字段进行升、降排序。但是有时候我们可能想按着自己想要的顺序排序,尤其在枚举类型中,就可能需要定制化排序。

基础表数据:

id  day1  day2
1    1     2
2    1     7
4    1     4
5    2     2
6    2     8
7    2     3
8    3     3
9    3     6
10   3     4

我们可以升序、降序排序

-- 升序
SELECT * FROM dx_info ORDER BY day1
-- 降序
SELECT * FROM dx_info ORDER BY day1 DESC

但有时我们想按着 1->3->2 或者2->3->1等等方式排序,则可以将排序值附上,但是sql中的顺序和我们的排序是相反的。

-- 1->3->2
SELECT * FROM dx_info ORDER BY day1=2, day1=3, day1=1
--数据返回如下
    1   1   2
    2   1   7
    4   1   4
    8   3   3
    9   3   6
    10  3   4
    5   2   2
    6   2   8
    7   2   3
-- 2->3->1
SELECT * FROM dx_info ORDER BY day1=1, day1=3, day1=2
-- 数据返回如下
    5   2   2
    6   2   8
    7   2   3
    8   3   3
    9   3   6
    10  3   4
    1   1   2
    2   1   7
    4   1   4

今天在项目中突然遇到了一个枚举字段多个不同值的排序,结果顺序是相反的,差点按着多个字段排序的逻辑思考(多个字段顺序排)。这个知识点忘记了,特此记录一下。

相关文章

网友评论

      本文标题:MySQL之ORDER BY同一个字段,不同值排序

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