Heim >Datenbank >MySQL-Tutorial >Warum kann ich in meiner SQL-WHERE-Klausel keine Aliase verwenden?
Aliase können in der WHERE-Klausel nicht referenziert werden
Beim Versuch, Aliase in der WHERE-Klausel einer SQL-Anweisung zu referenzieren, kann es zu einem Fehler kommen Zeigt an, dass die angegebene Spalte nicht vorhanden ist. Dieser Fehler tritt auf, weil die SQL-Ausführung einer bestimmten Reihenfolge folgt und die WHERE-Klausel vor der SELECT-Klausel ausgewertet wird. Folglich sind in der SELECT-Klausel definierte Aliase zum Zeitpunkt der Ausführung der WHERE-Klausel nicht erkennbar.
Ursache
Im bereitgestellten Beispiel versucht die folgende Abfrage, Zeilen zu filtern basierend auf einem Alias (_year), der in der SELECT-Klausel erstellt wurde:
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE _year > 90
Diese Abfrage führt zu Folgendem Fehler:
ERROR: column "_year" does not exist
Lösung
Um dieses Problem zu beheben und Aliase in der WHERE-Klausel zu referenzieren, muss die Abfrage neu geschrieben werden, um stattdessen die zugrunde liegende Spalte zu verwenden:
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE SUBSTRING(pk, 6, 2)::INT > 90
Durch direkte Referenzierung der Spalte (pk), die zum Erstellen des Alias (_year) verwendet wird, wird die Abfrage erfolgreich ausgeführt und ruft das Gewünschte ab Ergebnisse.
Das obige ist der detaillierte Inhalt vonWarum kann ich in meiner SQL-WHERE-Klausel keine Aliase verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!