Mysql
 sql >> Datenbank >  >> RDS >> Mysql

GROUP BY-Verhalten, wenn keine Aggregatfunktionen in der SELECT-Klausel vorhanden sind

Lesen Sie die MySQL-Dokumentation zu diesem speziellen Punkt.

Kurz gesagt, MySQL erlaubt aus Leistungsgründen das Weglassen einiger Spalten von GROUP BY, aber das funktioniert nur, wenn die weggelassenen Spalten alle denselben Wert haben (innerhalb einer Gruppierung), andernfalls sind die von der Abfrage zurückgegebenen Werte tatsächlich unbestimmt , wie von anderen in diesem Beitrag richtig erraten. Um sicherzugehen, dass das Hinzufügen einer ORDER BY-Klausel keine Form von deterministischem Verhalten wieder einführen würde.

Obwohl es nicht der Kern des Problems ist, zeigt dieses Beispiel, dass die Verwendung von * anstelle einer expliziten Aufzählung gewünschter Spalten oft eine schlechte Idee ist.

Auszug aus der MySQL 5.0-Dokumentation:

When using this feature, all rows in each group should have the same values
for the columns that are omitted from the GROUP BY part. The server is free
to return any value from the group, so the results are indeterminate unless
all values are the same.