Lebih sederhana:
SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
Bagaimana?
Postgres memiliki boolean
. yang tepat ketik (tidak seperti beberapa RDBMS lainnya). Anda dapat memesan dengan itu seperti dengan tipe data lainnya. Dan itu bisa NULL seperti tipe data lainnya. Urutan pengurutan default adalah:
FALSE (0)
TRUE (1)
NULL
(sort IS NOT DISTINCT FROM -1)
mengevaluasi ke FALSE
untuk semua nilai kecuali -1
- yang mengevaluasi TRUE
dan sortir terakhir. Cukup tambahkan sort
sebagai ORDER BY
sekunder barang.
Alternatif yang setara:
SELECT *
FROM tasks
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
db<>main biola di sini
sqlfiddle lama