Đơn giản hơn:
SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
Làm thế nào?
Postgres có boolean
thích hợp loại (không giống như một số RDBMS khác). Bạn có thể đặt hàng theo nó giống như bất kỳ kiểu dữ liệu nào khác. Và nó có thể là NULL giống như bất kỳ kiểu dữ liệu nào khác. Thứ tự sắp xếp mặc định là:
FALSE (0)
TRUE (1)
NULL
(sort IS NOT DISTINCT FROM -1)
đánh giá thành FALSE
cho tất cả các giá trị ngoại trừ -1
- đánh giá TRUE
và sắp xếp cuối cùng. Chỉ cần thêm sort
làm ORDER BY
phụ mặt hàng.
Thay thế tương đương:
SELECT *
FROM tasks
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
db <> fiddle here
Sqlfiddle cũ