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

PostgreSQL akzeptiert keinen Spaltenalias in der WHERE-Klausel

Sie stellen zwei Fragen:
1.

Warum kann ich in der WHERE-Klausel nicht auf den SELECT-Kostenalias verweisen?

2.

Aber warum nach Kostenabschreibung bestellen; ist erlaubt?


Das Handbuch hat hier eine Antwort für beide:

Der Name einer Ausgabespalte kann verwendet werden, um auf den Wert der Spalte in ORDER BY zu verweisen und GROUP BY -Klauseln, aber nicht im WHERE oder HAVING Klauseln; dort müssen Sie stattdessen den Ausdruck ausschreiben.

Es wird durch den SQL-Standard definiert und der Grund ist die Folge von Ereignissen in einem SELECT Anfrage. Zum Zeitpunkt WHERE Klauseln angewendet werden, Ausgabespalten im SELECT Liste wurde noch nicht berechnet. Aber wenn es um ORDER BY geht , Ausgabespalten sind leicht verfügbar.

Obwohl dies zunächst unbequem und verwirrend ist, ergibt es dennoch irgendwie Sinn.

Verwandte:

  • PostgreSQL-Where-Zählbedingung
  • Bester Weg, um die Ergebnisanzahl zu erhalten, bevor LIMIT angewendet wurde