自定义表格顺序,按特定ID然后按desc

时间:2019-02-25 09:23:40

标签: mysql sql

我想写这样的东西:

SELECT * FROM table ORDER BY id 0, 1 DESC

所以我可以按ID从最后一个到第一个对结果进行排序,而让前两个保持静止。

因此,如果我有此表(仅作为示例):

id   lucky_number
0         10
1         20
2         30
3         40
4         50
5         60

我会得到这个结果:

id   lucky_number
0         10
1         20
5         60
4         50
3         40
2         30

我该如何实现?

2 个答案:

答案 0 :(得分:2)

您在正确的轨道上,可以在ORDER BY中添加一个变量,其ID为0或1时为1,然后按降序排序,然后按id排序,但使用{{ 1}},当-id不为0或1时,这些值将按降序排列:

id

输出:

SELECT *
FROM `table`
ORDER BY id IN (0,1) DESC, CASE WHEN id IN (0,1) THEN id ELSE -id END;

Demo on dbfiddle

答案 1 :(得分:1)

我发现了使用FIELD()的另一种方法:

SELECT *
FROM `table`
ORDER BY FIELD(id,1,0) DESC, id DESC

Demo on dbfiddle

相关问题