Heim  >  Artikel  >  Datenbank  >  MySQL-Aggregatfunktionen ohne GROUP BY: Warum und wie?

MySQL-Aggregatfunktionen ohne GROUP BY: Warum und wie?

DDD
DDDOriginal
2024-11-06 05:42:02478Durchsuche

MySQL Aggregate Functions Without GROUP BY: Why and How?

MySQL-Aggregatfunktionen ohne GROUP BY: Warum und wie?

Im Gegensatz zu anderen relationalen Datenbankverwaltungssystemen (RDBMS), die einen Fehler auslösen, wenn eine Wenn die Aggregatfunktion in der SELECT-Liste ohne GROUP BY-Klausel erscheint, lässt MySQL dies zu. Dieses Verhalten hat Entwickler fasziniert und zu der folgenden Frage geführt:

Warum erlaubt MySQL Aggregatfunktionen ohne GROUP BY?

Antwort:

Die Designphilosophie von MySQL ermöglicht eine erweiterte Funktionalität über den SQL-Standard hinaus. Das Zulassen von Aggregatfunktionen ohne GROUP BY ist eine solche Erweiterung.

Beim Ausführen einer Abfrage wie SELECT col1,col2,sum(col3) FROM tbl1 gruppiert MySQL die Zeilen effektiv nach allen nicht aggregierten Spalten (in diesem Beispiel). Fall, Spalte 1 und Spalte 2). Anschließend wird das Ergebnis der Aggregatfunktion (Summe von Spalte 3) für die einzelne unbestimmte Gruppe zurückgegeben.

Frühere Versionen von MySQL ließen dieses Verhalten standardmäßig zu. Ab MySQL 5.7.5 wurde jedoch der SQL-Modus ONLY_FULL_GROUP_BY eingeführt, um eine strengere SQL-Konformität durchzusetzen und Abfragen mit Aggregatfunktionen ohne GROUP BY zu verbieten. Dieser Modus kann je nach Bedarf aktiviert oder deaktiviert werden. Standardmäßig ist es in MySQL-Versionen 8.0 und höher aktiviert.

Zusätzliche Hinweise:

  • Weitere Details hierzu finden Sie in der Dokumentation zum Group-by-Handling in MySQL Verhalten.
  • Der SQL-Modus ONLY_FULL_GROUP_BY kann dazu beitragen, die Kompatibilität mit anderen RDBMS sicherzustellen und die Leistung zu verbessern, indem unnötige Berechnungen vermieden werden.

Das obige ist der detaillierte Inhalt vonMySQL-Aggregatfunktionen ohne GROUP BY: Warum und wie?. 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