Heim >Datenbank >MySQL-Tutorial >Kann ich Aliase in der WHERE-Klausel von MySQL verwenden?
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!