Classificação de valores nulos após todos os outros, exceto especiais
Eu tenho uma tabela de itens do PostgreSQL com um campo de pedido opcional:
CREATE TABLE tasks (
id integer PRIMARY KEY DEFAULT nextval('f_seq'),
f_id integer REFERENCES fixins,
name text NOT NULL,
sort integer
);
Eu quero tarefas que não têmsort
valor a ser ordenado após todos os outros, com uma exceção: sesort = -1
Eu quero classificar depois disso. Então, por exemplo, dados esses valores:
id | f_id | name | sort
---+------+----------+-------
1 | 1 | zeta | -1
2 | 1 | alpha | 1
3 | 1 | gamma | 3
4 | 1 | beta | 2
5 | 1 | delta |
6 | 1 | epsilon |
Quero que eles classifiquem como:alpha
, beta
, gamma
, delta
, epsilon
, zeta
.
Eu sei que posso usarORDER BY COALESCE(sort,99999)
para ordenar valores nulos após não nulos, mas como posso obter esse valor especial-1
valor para vir depois daqueles?