PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

problema di alias di colonna postgres

In PostgreSQL non puoi usare l'espressione con un alias in ordine per. Solo i semplici pseudonimi funzionano lì. La tua query dovrebbe essere simile a questa:

   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;

Presumo tu intenda quel l2.user_id=l.user_id dovrebbe andare per primo.

Questo è un messaggio rilevante nella mailing list generale di PostgreSQL. Quanto segue è nella documentazione di ORDER BY clausola:

Ogni espressione può essere il nome o il numero ordinale di una colonna di output (SELEZIONA elemento dell'elenco), oppure può essere un'espressione arbitraria formata da colonna di input valori .

Quindi nessun alias quando si usa l'espressione.