In PostgreSQL können Sie keinen Ausdruck mit einem Alias in order by verwenden. Dort funktionieren nur einfache Aliase. Ihre Abfrage sollte wie folgt aussehen:
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;
Ich nehme an, Sie meinen diese l2.user_id=l.user_id
sollte zuerst gehen.
Dies ist eine relevante Nachricht auf der PostgreSQL-allgemeinen Mailingliste. Folgendes steht in der Dokumentation von ORDER BY
Klausel:
Jeder Ausdruck kann der Name oder die Ordnungszahl einer Ausgabespalte sein (SELECT-Listenelement), oder es kann ein beliebiger Ausdruck sein, der aus der Eingabespalte gebildet wird Werte .
Also keine Aliase, wenn der Ausdruck verwendet wird.