PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres-Spalten-Alias-Problem

In PostgreSQL können Sie keinen Ausdruck mit einem Alias ​​in order by verwenden. Dort funktionieren nur einfache Aliase. Ihre Abfrage sollte wie folgt aussehen:

   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;

Ich nehme an, Sie meinen diese l2.user_id=l.user_id sollte zuerst gehen.

Dies ist eine relevante Nachricht auf der PostgreSQL-allgemeinen Mailingliste. Folgendes steht in der Dokumentation von ORDER BY Klausel:

Jeder Ausdruck kann der Name oder die Ordnungszahl einer Ausgabespalte sein (SELECT-Listenelement), oder es kann ein beliebiger Ausdruck sein, der aus der Eingabespalte gebildet wird Werte .

Also keine Aliase, wenn der Ausdruck verwendet wird.