Сортировать по NULL-полю, только если поле NULL, а затем сортировать по имени в Postgresql - PullRequest
1 голос
/ 26 марта 2020

У меня есть следующий вид в Postgresql:

ORDER BY verified_at NULLS FIRST, name ASC

Я хочу, чтобы сначала были все записи с Verified_at NULLS, но только если поле Verified_at не равно NULL, затем порядок по имени. Я не хочу, чтобы Verified_at имел приоритет для имени, если Verified_at НЕ НЕДЕЙСТВИТЕЛЕН.

С этим кодом, Verified_at имеет приоритет для имени, после того, как отображаются NULL. На самом деле, возможно ли иметь порядок записей по имени, за исключением тех, которые имеют значение Verified_at NULL?

Пример того, что я хочу:

verified_at:     name:
NULL             Alex
NULL             Bernard
NULL             Toto
2018             Albert
2012             Boris
2015             Michel
2001             Lena

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Вы можете добавить первый критерий сортировки, который проверяет, являются ли данные нулевыми, а затем упорядочить по имени:

order by (verified_at is not null)::int, name

На самом деле непосредственное использование логического значения также должно работать:

order by verified_at is not null, name
0 голосов
/ 26 марта 2020

Вы можете заказать по CASE выражению:

ORDER BY
    CASE WHEN verified_at IS NULL THEN 0 ELSE 1 END,
    name
...