Heim >Datenbank >MySQL-Tutorial >Kann eine HAVING-Klausel ohne eine GROUP BY-Klausel in Standard-SQL existieren?

Kann eine HAVING-Klausel ohne eine GROUP BY-Klausel in Standard-SQL existieren?

Barbara Streisand
Barbara StreisandOriginal
2025-01-05 09:25:40224Durchsuche

Can a HAVING Clause Exist Without a GROUP BY Clause in Standard SQL?

HAVING ohne GROUP BY: Standard-SQL-Konformität

Kann eine HAVING-Klausel ohne eine GROUP BY-Klausel in Standard-SQL existieren? Laut Standard ist bei Verwendung einer HAVING-Klausel eine GROUP BY-Klausel erforderlich. Der Standard besagt, dass jede Spalte, auf die in der HAVING-Klausel verwiesen wird, entweder funktional von den Spalten in der GROUP BY-Klausel oder einer äußeren Referenz abhängig sein muss.

MySQL erlaubt jedoch eine HAVING-Klausel ohne eine GROUP BY-Klausel und das auch Funktioniert wie erwartet unter einer bestimmten Bedingung: wenn die erste Zeile den Maximalwert für die angegebene Spalte hat.

Um dem Standard zu entsprechen, sollte die Abfrage so geändert werden, dass sie eine GROUP BY-Klausel enthält. Wenn wir beispielsweise die Zeilen mit der maximalen Seitenanzahl abrufen möchten, wäre die korrigierte Abfrage:

SELECT *
FROM Book
GROUP BY BookID
HAVING NumberOfPages = MAX(NumberOfPages)

Diese Abfrage würde die Zeilen nach BookID gruppieren und die HAVING-Bedingung auf jede Gruppe anwenden und zurückgeben nur die Zeilen mit der maximalen Seitenanzahl in jeder Gruppe.

Das obige ist der detaillierte Inhalt vonKann eine HAVING-Klausel ohne eine GROUP BY-Klausel in Standard-SQL existieren?. 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