Vinzenz Mai: (MySQL) Gruppierung von Datensätzen, Probleme mit NULL

Beitrag lesen

Hallo,

Heißt das, ich darf GROUP BY ausschließlich in Verbindung mit Aggregatfunktionen nutzen?

nach allen Spalten, die *keine* Aggregatsfunktion enthalten, musst Du gemäß SQL-Standard gruppieren.

MySQL weicht dies dokumentiert so auf, dass es auf die Spalten, auf die keine Aggregatsfunktion angewendet wird und die auch nicht in der Spaltenliste der GROUP-BY-Klausel enthalten sind die Aggregatsfunktion GIB_ZUFÄLLIGEN_WERT_AUS_GRUPPE() anwendet.

Sind innerhalb der Gruppe alle Werte gleich, so stellt dies eine Optimierung da, weil man ein paar Bytes in der GROUP-BY-Klausel einspart. Sind innerhalb der Gruppe die Werte nicht gleich, so erhält man - ja, das steht so in der Doku - unvorhersagbare Ergebnisse. Du wirst nicht glauben, wieviele "Progger" sich auf solch unvorhersagbare Ergebnisse verlassen, weil sie das von ihnen gewünschte Ergebnis erhalten. Das hiesige Archiv weist genügend dieser Spezies auf.

Genau aus diesem Grund gibt es meiner Meinung nach kein DBMS, das sich schlechter dazu eignet, den Umgang mit GROUP BY zu lernen, als MySQL, es sei denn MySQL läuft im ONLY_FULL_GROUP_BY SQL mode.

Freundliche Grüße

Vinzenz