PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

problème d'alias de colonne postgres

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.