Aliase in WHERE-Klauseln referenzieren
In SQL ist die Ausführungsreihenfolge von Anweisungen innerhalb einer Abfrage entscheidend. Insbesondere wird die WHERE-Klausel vor der SELECT-Anweisung ausgeführt. Das bedeutet, dass beim Verweisen auf einen Alias in der WHERE-Klausel dieser definiert worden sein muss, bevor versucht wird, ihn zu verwenden.
Ursprüngliche Abfrage und Fehler
Die folgende Abfrage versucht dies Verwenden Sie einen Alias (_year) in der WHERE-Klausel:
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE _year > 90
Diese Abfrage löst jedoch eine aus Fehler:
ERROR: column "_year" does not exist LINE 1: ...STRING (pk, 6, 2)::INT AS _year FROM listing WHERE _year > 90... ^ ********** Error ********** ERROR: column "_year" does not exist
Dieser Fehler tritt auf, weil der Alias (_year) erst in der SELECT-Anweisung definiert wird.
Überwindung der Einschränkung
It Aufgrund der Ausführungsreihenfolge von SQL-Anweisungen ist es nicht möglich, in der WHERE-Klausel direkt auf einen Alias zu verweisen. Um diese Einschränkung zu vermeiden, schreiben Sie die Abfrage wie folgt um:
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE SUBSTRING(pk, 6, 2)::INT > 90
In dieser Abfrage wird der Ausdruck zur Berechnung von _year in der WHERE-Klausel wiederholt. Dies ist zwar nicht so prägnant wie die Verwendung eines Alias, stellt aber sicher, dass der Wert von _year berechnet wird, bevor er im Vergleich verwendet wird.
Das obige ist der detaillierte Inhalt vonKann ich Aliase in SQL-WHERE-Klauseln verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!