我有这样的自定义订购需求:
normal ordering | custom ordering 1 | 7 2 | 6 3 | 5 4 | 4 5 | 3 6 | 2 7 | 8 . | . . | . . | . . | . . | N N | 1
我曾经想过用UNION3个不同的选择查询的帮助下结合ORDER BY和LIMIT。但是,我不能这样做,因为UNION必须 在 ORDER BY和 之前 使用LIMIT。
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
1亿个常量必须大于N。 这是一个简单的演示