I PostgreSQL kan du inte använda uttryck med ett alias i ordning efter. Endast vanliga alias fungerar där. Din fråga bör se ut så här:
select distinct
l2.*,
l.user_id as l_user_id,
l.geopoint_id as l_geopoint_id
from locations l
left join locations l2 on l.geopoint_id = l2.geopoint_id
where l.user_id = 8
order by l2.geopoint_id, l.user_id = l2.user_id desc;
Jag antar att du menar att l2.user_id=l.user_id
borde gå först.
Detta är relevant meddelande på PostgreSQL-allmän e-postlista. Följande finns i dokumentationen för ORDER BY
klausul:
Varje uttryck kan vara namnet eller ordningsnumret för en utdatakolumn (VÄLJ listobjekt), eller så kan det vara ett godtyckligt uttryck som bildas från inmatningskolumn värden .
Så inga alias när uttryck används.