MySQL erweitert die Verwendung von GROUP BY
dahingehend, dass Sie Spalten oder Berechnungen in der
SELECT
-Liste verwenden können, die nicht in
der GROUP BY
-Klausel erscheinen. Dies steht
für „ein beliebiger Wert für diese Gruppe“. Sie
können die Leistung dadurch optimieren, dass Sie das Sortieren
und Gruppieren unnötiger Elemente umgehen. So müssen Sie
beispielsweise in der folgenden Abfrage keine Gruppierung von
customer.name
durchführen:
SELECT order.custid, customer.name, MAX(payments) FROM order,customer WHERE order.custid = customer.custid GROUP BY order.custid;
In Standard-SQL hätten Sie hier
customer.name
zur GROUP
BY
-Klausel hinzufügen müssen. In MySQL ist der Name
redundant, wenn bei der Ausführung der SQL-Modus
ONLY_FULL_GROUP_BY
nicht aktiviert ist.
Verwenden Sie diese Funktion nicht, wenn
die Spalten, die Sie im GROUP BY
-Anteil
weglassen, in der Gruppe nicht eindeutig sind! Sie erhalten
ansonsten nicht vorhersehbare Ergebnisse.
In manchen Fällen können Sie mit MIN()
und
MAX()
einen bestimmten Spaltenwert auch dann
erhalten, wenn dieser nicht eindeutig ist. Folgendes übergibt
den Wert von column
aus dem Datensatz, der
den niedrigsten Wert in der Spalte sort
hat:
SUBSTR(MIN(CONCAT(RPAD(sort,6,' '),column)),7)
Siehe auch Abschnitt 3.6.4, „Die Zeilen, die das gruppenweise Maximum eines bestimmten Felds enthalten“.
Beachten Sie, dass Sie, wenn Sie sich an den SQL-Standard halten
wollen, Ausdrücke nicht in GROUP BY
-Klauseln
verwenden dürfen. Sie können diese Einschränkung umgehen,
indem Sie ein Alias für den Ausdruck verwenden:
SELECT id,FLOOR(value/100) AS val
FROM tbl_name
GROUP BY id, val;
MySQL gestattet hingegen die Benutzung von Ausdrücken in
GROUP BY
-Klauseln. Zum Beispiel:
SELECT id,FLOOR(value/100)
FROM tbl_name
GROUP BY id, FLOOR(value/100);
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.