Heim > Datenbank > MySQL-Tutorial > Warum kann ich in der HAVING-Klausel von SQL keine Alias-Aggregate verwenden?

Warum kann ich in der HAVING-Klausel von SQL keine Alias-Aggregate verwenden?

Mary-Kate Olsen
Freigeben: 2024-12-31 17:32:10
Original
919 Leute haben es durchsucht

Why Can't I Use Aliased Aggregates in SQL's HAVING Clause?

Warum Alias-Aggregate in HAVING-Klauseln verboten sind

In SQL stoßen Benutzer häufig auf einen Fehler, wenn sie versuchen, einen Alias ​​für ein Aggregat in zu verwenden eine HAVING-Klausel. Dies ergibt sich aus der spezifischen Reihenfolge, in der SQL Abfragen verarbeitet.

Die HAVING-Klausel, die die Ergebnisse einer GROUP BY-Operation filtert, wird vor der SELECT-Klausel ausgewertet. Daher sind in der SELECT-Klausel definierte Aliase bei der Auswertung der HAVING-Klausel noch nicht verfügbar.

Um dies besser zu verstehen, betrachten wir die folgende logische Reihenfolge der Abfrageausführung:

  1. Es werden die Ergebnisse aller verknüpften Tabellen in der FROM-Klausel gebildet.
  2. Die WHERE-Klausel filtert Zeilen heraus, die die Suche nicht erfüllen Kriterien.
  3. Zeilen werden gemäß der GROUP BY-Klausel gruppiert.
  4. Gruppen, die die Kriterien der HAVING-Klausel nicht erfüllen, werden eliminiert.
  5. Aggregatfunktionen werden angewendet, um Aggregatwerte zu berechnen .
  6. Ausdrücke in der SELECT-Klausel werden ausgewertet.

Seit der HAVING-Klausel vor der SELECT-Klausel ausgewertet wird, kann es nicht auf Aliase verweisen, die später in der Abfrage definiert werden. Diese Einschränkung erklärt, warum die Verwendung eines Alias ​​in einer HAVING-Klausel, wie im Beispiel gezeigt, zu einem Fehler „Ungültiger Spaltenname“ führt.

Im Gegensatz dazu funktionieren Aliase in der ORDER BY-Klausel, da dies in der ORDER BY-Klausel der Fall ist nach der SELECT-Klausel ausgewertet. Daher stehen in der SELECT-Klausel definierte Aliase zur Verwendung in der ORDER BY-Klausel zur Verfügung.

Das obige ist der detaillierte Inhalt vonWarum kann ich in der HAVING-Klausel von SQL keine Alias-Aggregate verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage