MySQL-Aggregatfunktionen: Warum ist keine GROUP BY-Klausel erforderlich?
In MySQL können Aggregatfunktionen in der SELECT-Liste ohne Begleitfunktion verwendet werden GROUP BY-Klausel, im Gegensatz zu anderen RDBMS-Produkten wie SQL Server. Dieses Verhalten ist beabsichtigt und stellt eine einzigartige Erweiterung des Standards dar.
Zum Beispiel die Abfrage „SELECT col1,col2,sum(col3) FROM tbl1;“ wird erfolgreich ausgeführt und gibt eine einzelne Zeile zurück, die die ersten Zeilenwerte für Spalte 1 und Spalte 2 sowie die Summe aller Werte für Spalte 3 enthält.
Erklärung
MySQL lässt dieses Verhalten zu, weil es berücksichtigt, dass ohne eine GROUP BY-Klausel alle Zeilen implizit gruppiert werden. Folglich arbeitet eine Aggregatfunktion, die auf eine ganze Tabelle oder mehrere Zeilen angewendet wird, auf einer einzelnen, impliziten Gruppe.
Vorheriges Verhalten
Vor MySQL-Version 5.7.5, dies Das Verhalten unterliegt keinen Einschränkungen. Allerdings wurde ein neuer Server-SQL-Modus, ONLY_FULL_GROUP_BY, eingeführt, um eine strengere Einhaltung des SQL-Standards zu erzwingen. Wenn dieser Modus aktiviert ist, erfordert er eine GROUP BY-Klausel für die gesamte Verwendung von Aggregatfunktionen.
Fazit
MySQLs einzigartige Handhabung von Aggregatfunktionen ohne eine GROUP BY-Klausel bietet Flexibilität bei den Daten Abruf. Es ist jedoch wichtig, dieses Verhalten zu verstehen und die Aktivierung von ONLY_FULL_GROUP_BY in Betracht zu ziehen, um die Einhaltung der SQL-Standards sicherzustellen.
Das obige ist der detaillierte Inhalt vonWarum kann MySQL Aggregatfunktionen ohne eine GROUP BY-Klausel verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!