Postgres поддерживает логические типы, которые принимают два значения «true» и «false» (плюс, конечно, NULL
). В качестве ключа order by
используется логическое значение.
Выражение account_id = 100
оценивается как "true" для account_id 100 и false для других (или NULL
).
Чтоэто делает? Ну, "true"> "false" и порядок возрастает. Следовательно, истинное значение упорядочено после всех других значений;account_id 100 идет в конце. Ну, не совсем конец. NULL
значения являются самыми последними - они будут идти в самом конце.
Чаще всего это делается по убыванию:
order by (account_id = 100) desc
Это ставит учетную запись 100 первой в списке.
Примечание: в таких случаях я помещаю выражение в скобки, чтобы прояснить, что на самом деле целью является упорядочение по выражению. То есть опечатки нет.