Heim >Datenbank >MySQL-Tutorial >Kann eine HAVING-Klausel ohne eine GROUP BY-Klausel in Standard-SQL existieren?
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!