自定义表顺序,按某些 id 然后描述



我想写这样的东西:

SELECT * FROM table ORDER BY id 0, 1 DESC

因此,我可以按 id 从最后一个到第一个对结果进行排序,同时让前 2 个保持静止。

因此,如果我有此表(仅举一个例子):

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

我怎样才能做到这一点?

您走在正确的轨道上,您可以在ORDER BY中添加一个变量,该变量为 1 表示 id = 0 或 1,并按该降序排序,然后按id排序,但是当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;

输出:

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

在 dbfiddle 上演示

我找到了另一种使用FIELD()的方法:

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

在 dbfiddle 上演示

相关内容

最新更新