I PostgreSQL kan du ikke bruge udtryk med et alias i rækkefølge efter. Kun almindelige aliasser virker der. Din forespørgsel skulle se sådan ud:
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;
Jeg går ud fra, at du mener l2.user_id=l.user_id
burde gå først.
Dette er relevant besked på PostgreSQL-generelle postliste. Følgende er i dokumentationen til ORDER BY
klausul:
Hvert udtryk kan være navnet eller ordinært tal på en outputkolonne (VÆLG listeelement), eller det kan være et vilkårligt udtryk dannet fra input-kolonne værdier .
Så ingen aliaser, når udtryk bruges.