PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

problema de alias de coluna postgres


No PostgreSQL você não pode usar expressão com um alias na ordem. Apenas aliases simples funcionam lá. Sua consulta deve ficar assim:
   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;

Suponho que você queira dizer que l2.user_id=l.user_id deveria ir primeiro.

Esta é uma mensagem relevante na lista de discussão geral do PostgreSQL. O seguinte está na documentação de ORDER BY cláusula:

Cada expressão pode ser o nome ou número ordinal de uma coluna de saída (SELECT item de lista), ou pode ser uma expressão arbitrária formada a partir de coluna de entrada valores .

Portanto, não há aliases quando a expressão é usada.