Verstehen der Einschränkungen bei der Verwendung von Aliasen in HAVING-Klauseln
In SQL mag es intuitiv erscheinen, Aliase für Aggregate innerhalb der HAVING-Klausel zu verwenden. Dieser Ansatz führt jedoch aufgrund der spezifischen Auswertungsreihenfolge von SQL-Abfragen zum Fehler „Ungültiger Spaltenname“.
Um diese Einschränkung zu verstehen, ist es wichtig zu verstehen, wie SQL eine Abfrage ausführt:
Da daher die HAVING-Klausel vor der SELECT-Klausel ausgewertet wird, wird der dem Aggregat in der SELECT-Anweisung zugewiesene Alias (z. B. „col7“) verwendet. ist SQL noch nicht bekannt, wenn es den HAVING-Ausdruck auswertet. Folglich tritt der Fehler „Ungültiger Spaltenname ‚col7‘“ auf.
Im Gegensatz dazu wird die ORDER BY-Klausel nach der SELECT-Anweisung ausgewertet, sodass in der SELECT-Klausel definierte Aliase verwendet werden können. Dies liegt daran, dass die ORDER BY-Klausel mit der durch die SELECT-Anweisung erstellten Ergebnismenge arbeitet.
Um dieses Problem zu beheben, ersetzen Sie den Alias in der HAVING-Klausel durch den tatsächlichen Aggregatausdruck, wie unten gezeigt:
select col1,count(col2) from --some join operation group by col1 having count(col2) >= 3
Das obige ist der detaillierte Inhalt vonWarum kann ich in der HAVING-Klausel von SQL keine Aliase verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!