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