我有这样的自定义订购需求:
normal ordering | custom ordering
1 | 7
2 | 6
3 | 5
4 | 4
5 | 3
6 | 2
7 | 8
. | .
. | .
. | .
. | .
. | N
N | 1
我考虑过在 ORDER BY
和 LIMIT
的帮助下使用 UNION
组合 3 个不同的选择查询。但是,我不能那样做,因为 UNION
必须在 ORDER BY
和 LIMIT
之前使用。
如何进行选择(或选择)以实现上述自定义排序?
另一种解决方法可能会有所帮助,就是将此选择查询中返回的第一条记录设为最后一条记录,但是怎么做呢?
最佳答案
试试这个:
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个constans必须大于N。
这是一个simple demo
关于SQL 查询按自定义顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18212972/