小编典典

SQL查询按自定义顺序排序

sql

我有这样的自定义订购需求:

normal ordering  |  custom ordering 
      1          |        7
      2          |        6
      3          |        5
      4          |        4
      5          |        3
      6          |        2
      7          |        8
      .          |        .
      .          |        .
      .          |        .
      .          |        .
      .          |        N
      N          |        1

我曾经想过用UNION3个不同的选择查询的帮助下结合ORDER BYLIMIT。但是,我不能这样做,因为UNION必须
ORDER BY之前 使用LIMIT

如何进行选择(或多个选择)以实现上面的自定义排序?

另一个解决方法可能会有所帮助,就是使此选择查询中返回的 第一条记录 成为最后一条记录,但是如何?


阅读 330

收藏
2021-04-28

共1个答案

小编典典

试试这个:

SELECT x
FROM t1
ORDER BY
    CASE
      WHEN x = 1 THEN 100000001
      WHEN x between 2 and 7 THEN 7 - x
      WHEN x between 8 and ( SELECT max(x) FROM t1 ) - 1 THEN x
      ELSE 100000000 
    END

1亿个常量必须大于N。
这是一个简单的演示

2021-04-28