Aliase in der WHERE-Klausel referenzieren: Eine Untersuchung
In PostgreSQL (psql) ist es nicht direkt möglich, Aliase in der WHERE-Klausel zu referenzieren zum Ausführungsauftrag. Die WHERE-Klausel wird ausgeführt, bevor Aliase angewendet werden, was zu dem Fehler „Spalte „_year“ existiert nicht“ führt.
Dies tritt auf, weil die WHERE-Klausel auf die ursprünglichen Spaltennamen angewendet wird und der Alias erst später angewendet wird , während der Ergebnismengengenerierung. Daher wird der Alias nicht erkannt, wenn die WHERE-Klausel ausgeführt wird.
Um dieses Problem zu beheben, muss die Abfrage neu geschrieben werden, um den ursprünglichen Spaltennamen direkt in der WHERE-Klausel zu verwenden. Betrachten Sie beispielsweise die Abfrage:
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE _year > 90;
Diese Abfrage schlägt mit der Fehlermeldung „Spalte „_Jahr“ existiert nicht“ fehl. Um das Problem zu beheben, muss der Alias durch den ursprünglichen Spaltennamen in der WHERE-Klausel ersetzt werden:
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE SUBSTRING(pk, 6, 2)::INT > 90;
Das obige ist der detaillierte Inhalt vonWarum kann ich in der WHERE-Klausel einer PostgreSQL-Abfrage keine Aliase verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!