HAVING ohne GROUP BY
Gemäß dem SQL-Standard wird eine HAVING-Klausel typischerweise in Verbindung mit einer GROUP BY-Klausel verwendet, um Gruppen zu filtern von Zeilen basierend auf aggregierten Berechnungen, die für diese Gruppen durchgeführt wurden. Einige Datenbanksysteme erlauben jedoch die Verwendung einer HAVING-Klausel ohne GROUP BY.
Frage:
Ist es möglich, eine HAVING-Klausel ohne GROUP BY zu verwenden? SQL-Standard?
Antwort:
Ja, das ist möglich Verwenden Sie in Standard-SQL eine HAVING-Klausel ohne GROUP BY. Das Verhalten solcher Abfragen variiert jedoch je nach verwendetem Datenbanksystem.
MySQL-Verhalten:
In MySQL ist eine HAVING-Klausel ohne GROUP BY zulässig, vorausgesetzt dass die erste Zeile der Ergebnismenge den Maximalwert für die aggregierte Spalte aufweist. Dieses Verhalten weicht vom SQL-Standard ab, der im Allgemeinen eine GROUP BY-Klausel in Gegenwart einer HAVING-Klausel erfordert.
SQL-Standardinterpretation:
Der SQL-Standard definiert a Die HAVING-Klausel wirkt auf Aggregate, die über die von einer GROUP BY-Klausel erzeugte Ergebnismenge berechnet werden. Ohne eine GROUP BY-Klausel wird unklar, auf welche Zeilen sich die HAVING-Klausel bezieht.
Daher ist eine HAVING-Klausel ohne GROUP BY gemäß dem SQL-Standard nicht unbedingt gültig. Einige Datenbanksysteme wie MySQL erlauben solche Abfragen jedoch möglicherweise aus Kompatibilitätsgründen.
Gültiges Standard-SQL-Beispiel:
SELECT 'T' AS result FROM Book HAVING MIN(NumberOfPages) < MAX(NumberOfPages);
Diese Abfrage ist gültiges Standard-SQL und gibt eine einzelne Zeile mit einer Spalte zurück, die den Wert „T“ enthält, wenn Bücher mit unterschiedlicher Anzahl vorhanden sind Seiten.
Schlussfolgerung:
Während die Verwendung einer HAVING-Klausel ohne GROUP BY in bestimmten Szenarien praktisch sein kann, ist es wichtig zu beachten, dass das Verhalten solcher Abfragen dies nicht ist standardisiert und kann je nach Datenbanksystem variieren. Für eine zuverlässige datenbankübergreifende Kompatibilität wird empfohlen, beim Filtern von Aggregatberechnungen GROUP BY in Verbindung mit HAVING zu verwenden.
Das obige ist der detaillierte Inhalt vonKann eine HAVING-Klausel ohne eine GROUP BY-Klausel in Standard-SQL verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!