In PostgreSQL kunt u geen expressie gebruiken met een alias in volgorde door. Alleen gewone aliassen werken daar. Uw vraag zou er als volgt uit moeten zien:
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;
Ik neem aan dat je bedoelt dat l2.user_id=l.user_id
zou eerst moeten gaan.
Dit is een relevant bericht op de PostgreSQL-algemene mailinglijst. Het volgende staat in de documentatie van ORDER BY
clausule:
Elke uitdrukking kan het naam ordinaal nummer zijn van een uitvoerkolom (SELECT lijstitem), of het kan een willekeurige uitdrukking zijn gevormd uit input-column waarden .
Dus geen aliassen wanneer uitdrukking wordt gebruikt.