Если вы хотите сделать то же самое для запроса UNION, например, если у вас есть:
select id,name
from friends
UNION
select id,name
from friends
order by id=5 desc
... вы получите исключение в PostgreSQL:
Могут использоваться только имена столбцов результата, но не выражения или функции.СОВЕТ: Добавьте выражение / функцию к каждому SELECT или переместите UNION в предложение from
Чтобы обойти это, вы должны использовать следующее:
select id,name, (id=5) AS is_five
from friends
UNION
select id,name, (id=5) AS is_five
from friends
order by is_five DESC, id DESC
Выражение (id = 5) вернет 't' ИЛИ 'f', в зависимости от того, равно ли значение вашего столбца ожидаемому значению (5) или нет, поэтому порядок будет сначала упорядочивать столбцы 't', затемостальное.