postgresql命令

tom*_*omh 2 postgresql sql-order-by

我的表有一个'number'列,范围从0到1000左右.我想从表中选择所有内容,同时按编号排序.但是,我希望number = 0的行最后出现.我可以在两个查询中执行此操作:

select * from channel_table where number > 0 order by number;
select * from channel_table where number = 0;
Run Code Online (Sandbox Code Playgroud)

但我猜有一个单线解决方案?

a'r*_*a'r 6

由于您只有一个例外情况,因此可以将nullif与nulls子句一起使用.否则,您需要通过各种case语句进行排序,以获得更复杂的排序逻辑.

select * from channel_table 
order by nullif(number, 0) nulls last
Run Code Online (Sandbox Code Playgroud)