postgresql заказ по - PullRequest
       16

postgresql заказ по

2 голосов
/ 23 февраля 2010

В моей таблице есть столбец «число» от 0 до 1000. Я хочу выбрать все из таблицы, упорядочив ее по номеру. Однако я хочу, чтобы строки с номером = 0 появлялись последними. Я мог бы сделать это в двух запросах:

select * from channel_table where number > 0 order by number;
select * from channel_table where number = 0;

Но я предполагаю, что есть однострочное решение?

Ответы [ 2 ]

6 голосов
/ 23 февраля 2010

Поскольку у вас есть только один исключительный случай, вы можете использовать nullif с предложением nulls. В противном случае вам потребуется упорядочить по различным операторам case, чтобы получить более сложную логику упорядочения.

select * from channel_table 
order by nullif(number, 0) nulls last
0 голосов
/ 23 февраля 2010

Это просто?

select * from channel_table order by number desc;
...