Heim >Datenbank >MySQL-Tutorial >Warum kann ich Aggregatfunktionen ohne GROUP BY in MySQL verwenden?

Warum kann ich Aggregatfunktionen ohne GROUP BY in MySQL verwenden?

DDD
DDDOriginal
2024-11-06 11:07:02958Durchsuche

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

MySQLs einzigartige Behandlung von Aggregatfunktionen ohne GROUP BY

In MySQL ist es im Gegensatz zu anderen relationalen Datenbankverwaltungssystemen möglich, Aggregatfunktionen zu verwenden in der SELECT-Liste ohne Angabe einer GROUP BY-Klausel. Dieses Verhalten hat bei Entwicklern, die mit restriktiveren DBMS-Plattformen vertraut sind, Fragen aufgeworfen.

Die MySQL-Begründung

MySQL ermöglicht diese Flexibilität von Natur aus und betrachtet es als wertvolle Erweiterung von SQL Standard. Wenn eine Aggregatfunktion ohne GROUP BY verwendet wird, stellt das zurückgegebene Ergebnis eine einzelne Zeile dar, die den über die gesamte Tabelle berechneten Aggregatwert enthält. Dies kann in Szenarien nützlich sein, in denen zusammenfassende Informationen ohne die Notwendigkeit einer Gruppierung gewünscht werden.

Beispiel

Bedenken Sie beispielsweise die Abfrage:

SELECT col1, col2, SUM(col3) FROM tbl1;

Ohne ein GROUP BY interpretiert MySQL dies als eine einzelne Gruppe und liefert die folgende Ausgabe:

col1    col2    SUM(col3)
-------------------------
(First row value of col1)    (First row value of col2)    (Sum of all col3 values)

Einschränkungen mit ONLY_FULL_GROUP_BY

MySQLs nachsichtiger Ansatz bei der Handhabung von Aggregaten Funktionen ohne GROUP BY wurden eingeführt, wobei ONLY_FULL_GROUP_BY auf OFF gesetzt war. Mit der Veröffentlichung von MySQL Version 5.7.5 ist ONLY_FULL_GROUP_BY standardmäßig aktiviert, wodurch dieses Verhalten eingeschränkt wird.

Die Aktivierung von ONLY_FULL_GROUP_BY stellt sicher, dass Aggregatfunktionen nur in Verbindung mit einer GROUP BY-Klausel verwendet werden können, was zu einem Fehler führt, wenn Es wird eine Abfrage ohne sie angetroffen. Diese Änderung entspricht dem SQL-Standard und fördert die Datenkonsistenz.

Das obige ist der detaillierte Inhalt vonWarum 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