sql >> Base de Datos >  >> RDS >> PostgreSQL

problema de alias de columna de postgres

En PostgreSQL no puede usar expresiones con un alias en orden por. Solo los alias simples funcionan allí. Su consulta debería verse así:

   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;

Supongo que te refieres a que l2.user_id=l.user_id debería ir primero.

Este es un mensaje relevante en la lista de correo general de PostgreSQL. Lo siguiente está en la documentación de ORDER BY cláusula:

Cada expresión puede ser el nombre o el número ordinal de una columna de salida (elemento de lista SELECCIONAR), o puede ser una expresión arbitraria formada a partir de columna de entrada valores .

Así que no hay alias cuando se usa la expresión.