我有这样的表
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
我需要的是这样的结果
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
我可以通过两个SQL查询获得此结果,然后将它们组合。
有没有办法用一个SQL做到这一点?
谢谢
SELECT * FROM atable ORDER BY display_order = 0, display_order
当display_order为0时,第一个排序项的display_order =0计算结果为True,否则为False。True排序后False鈥所以,第一排序标准可以确保排与display_order0在列表的最后排序。
display_order
display_order =0
True
False
第二个ORDER BY项display_order额外指定了具有非零阶值的行的阶。
因此,这两个条件为您提供了所需的排序顺序。