Heim  >  Artikel  >  Datenbank  >  Wie kann ich Aggregatfunktionen ohne GROUP BY in MySQL verwenden?

Wie kann ich Aggregatfunktionen ohne GROUP BY in MySQL verwenden?

DDD
DDDOriginal
2024-11-06 07:09:02308Durchsuche

How Can I Use Aggregate Functions Without GROUP BY in MySQL?

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!

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