Heim >Datenbank >MySQL-Tutorial >Kann ich Aliase in der WHERE-Klausel von MySQL verwenden?

Kann ich Aliase in der WHERE-Klausel von MySQL verwenden?

Barbara Streisand
Barbara StreisandOriginal
2025-01-20 02:09:09508Durchsuche

Can I Use Aliases in MySQL's WHERE Clause?

MySQL WHERE-Klausel: Alias-Einschränkungen

MySQL ermöglicht Aliasing von Spalten für eine bessere Lesbarkeit und zum Erstellen neuer Ausdrücke in Abfragen. Die direkte Verwendung von Aliasen innerhalb der WHERE-Klausel führt jedoch häufig zu einem Fehler „Unbekannte Spalte“. Dies liegt daran, dass die WHERE-Klausel Zeilen filtert, bevor Aliase zugewiesen werden.

Problemumgehungen:

Eine Lösung besteht in der Verwendung der HAVING-Klausel. Im Gegensatz zu WHERE wird HAVING nach der Gruppierung und Aggregation ausgeführt und ermöglicht den Verweis auf Aliase, die innerhalb der Abfrage erstellt wurden:

<code class="language-sql">SELECT *, AVG(rev_rating) AS avg_rating
FROM reviews
GROUP BY rev_id
HAVING avg_rating > 5;</code>

Hier wird avg_rating in HAVING korrekt referenziert.

Um eine ähnliche Filterung in der WHERE-Klausel zu erreichen, müssen Sie den Alias ​​durch seinen vollständigen Ausdruck ersetzen:

<code class="language-sql">SELECT *
FROM reviews
WHERE (SUM(reviews.rev_rating) / COUNT(reviews.rev_id)) > 5;</code>

Wichtige Überlegungen:

Die WHERE-Klausel unterstützt nicht alle Ausdrücke, insbesondere Aggregatfunktionen wie SUM() oder AVG(), die in Aliasen verwendet werden. In solchen Fällen ist HAVING unerlässlich.

Wie in der MySQL-Dokumentation erläutert, ist das Verweisen auf Spaltenaliase in WHERE nicht zulässig, da deren Werte zum Zeitpunkt der Ausführung der WHERE-Klausel möglicherweise nicht berechnet werden.

Das obige ist der detaillierte Inhalt vonKann ich Aliase in der WHERE-Klausel von MySQL 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