我正在开发一个教育网站,需要按数字范围进行排序。我需要一些关于如何将数据排序到下面列出的范围的帮助。 581是最高的,604是最低的。它从604到582开始,然后从1开始直到581。
(Highest) 581 580 579. . . 3 2 1 582 . . . 602 603 604 (Lowest)
答案 0 :(得分:1)
这是一个想法......
SELECT * FROM ints;
+---+
| i |
+---+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
+---+
SELECT i,CASE WHEN i < 5 THEN 1000-i ELSE i END x FROM ints ORDER BY x;
+---+------+
| i | x |
+---+------+
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| 4 | 996 |
| 3 | 997 |
| 2 | 998 |
| 1 | 999 |
| 0 | 1000 |
+---+------+
你也可以把它写成......
SELECT i FROM ints ORDER BY CASE WHEN i < 5 THEN 1000-i ELSE i END;