Heim >Datenbank >MySQL-Tutorial >Warum kann ich in der WHERE-Klausel einer PostgreSQL-Abfrage keine Aliase verwenden?

Warum kann ich in der WHERE-Klausel einer PostgreSQL-Abfrage keine Aliase verwenden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-27 12:45:11944Durchsuche

Why Can't I Use Aliases in the WHERE Clause of a PostgreSQL Query?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn