3

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

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

我曾考虑在 和 的帮助下使用组合UNION3 个不同的选择查询。但是,我不能这样做,因为必须在and之前使用。ORDER BYLIMITUNION ORDER BYLIMIT

如何进行选择(或选择)以实现上述自定义排序?

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

4

2 回答 2

2

尝试这个:

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 

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

于 2013-08-14T17:57:05.780 回答
2

添加一个CustomSeq包含两列的新表,Value然后Sequence。在该表中,您可以存储值及其自定义顺序。然后加入该表并按其Sequence列排序。

于 2013-08-13T15:20:44.760 回答