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:
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!