我有一张这样的桌子
id title display_order
1 t1 3
2 t2 1
3 t3 5
4 t4 4
5 t5 2
6 t6 0
7 t7 7
8 t8 6
9 t9 0
10 t10 0
Run Code Online (Sandbox Code Playgroud)
我需要的是得到这样的结果
id title display_order
2 t2 1
5 t5 2
1 t1 3
4 t4 4
3 t3 5
8 t8 6
7 t7 7
...order of the rest is not important but should be in the result
6 t6 0
9 t9 0
10 t10 0
Run Code Online (Sandbox Code Playgroud)
我可以通过两个SQL查询获得此结果,然后将它们组合在一起.
有没有办法用一个SQL做到这一点?
谢谢
And*_*y M 18
SELECT *
FROM atable
ORDER BY
display_order = 0,
display_order
Run Code Online (Sandbox Code Playgroud)
当display_order为0时,第一个排序项display_order = 0,计算结果True,否则计算结果为False.True排序后False- 所以,第一个排序标准确保display_order在列表末尾排序0的行.
第二个ORDER BY项,display_order另外指定具有非零订单值的行的顺序.
因此,这两个标准为您提供所需的排序顺序.