MySQL-Aggregatfunktionen ohne GROUP BY: Warum und wie
In MySQL können Aggregatfunktionen in SELECT-Listen verwendet werden, ohne ein GROUP BY anzugeben -Klausel, im Gegensatz zu anderen RDBMS wie SQL Server. Dieses Verhalten, das unerwartet erscheinen mag, ist tatsächlich eine bewusste Entwurfsentscheidung.
Wenn eine Aggregatfunktion ohne GROUP BY verwendet wird, behandelt MySQL die gesamte Ergebnismenge als eine einzelne Gruppe. Dies bedeutet, dass die Aggregatfunktion einen einzelnen Wert für die gesamte in der Abfrage angegebene Tabelle oder Teilmenge zurückgibt.
Zum Beispiel die Abfrage SELECT col1,col2,sum(col3) FROM tbl1; gibt eine einzelne Zeile zurück, die die ersten Werte von Spalte 1 und Spalte 2 sowie die Summe aller Werte in Spalte 3 enthält. Dieses Verhalten kann in Szenarien nützlich sein, in denen Sie zusammenfassende Statistiken berechnen müssen, ohne die Daten zu gruppieren.
Das Verhalten von Aggregatfunktionen ohne GROUP BY kann mithilfe des Server-SQL-Modus ONLY_FULL_GROUP_BY geändert werden. Standardmäßig ist dieser Modus in MySQL-Versionen vor 5.7.5 deaktiviert. Es kann jedoch aktiviert werden, um Aggregatfunktionen ohne GROUP BY zu verbieten.
Um ONLY_FULL_GROUP_BY zu aktivieren, fügen Sie die folgende Zeile zu Ihrer MySQL-Konfigurationsdatei (normalerweise my.cnf) hinzu:
sql-mode=ONLY_FULL_GROUP_BY
Einmal aktiviert ist, gibt MySQL einen Fehler für Abfragen aus, die Aggregatfunktionen ohne GROUP BY verwenden. Dies kann dazu beitragen, die Datenintegrität sicherzustellen und falsche Ergebnisse zu verhindern.
Das obige ist der detaillierte Inhalt vonWie kann ich Aggregatfunktionen ohne GROUP BY in MySQL verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!