Dans PostgreSQL, vous ne pouvez pas utiliser d'expression avec un alias dans l'ordre de. Seuls les alias simples fonctionnent ici. Votre requête devrait ressembler à ceci :
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;
Je suppose que vous voulez dire que l2.user_id=l.user_id
devrait passer en premier.
Ceci est un message pertinent sur la liste de diffusion PostgreSQL-general. Ce qui suit se trouve dans la documentation de ORDER BY
clause :
Chaque expression peut être le nom ou le numéro ordinal d'une colonne de sortie (élément de liste SELECT), ou il peut s'agir d'une expression arbitraire formée à partir d'une colonne d'entrée valeurs .
Donc pas d'alias lorsque l'expression est utilisée.