小编典典

获取和排序值大于零的行,然后获取值零的行

sql

我有这样的表

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做到这一点?

谢谢


阅读 201

收藏
2021-05-16

共1个答案

小编典典

SELECT * FROM atable
ORDER BY
display_order = 0,
display_order

display_order为0时,第一个排序项的display_order =0计算结果为True,否则为FalseTrue排序后False鈥所以,第一排序标准可以确保排与display_order0在列表的最后排序。

第二个ORDER BY项display_order额外指定了具有非零阶值的行的阶。

因此,这两个条件为您提供了所需的排序顺序。

2021-05-16