Sven Rautenberg: MYSQL select DISTINCT über mehrere Spalten

Beitrag lesen

Moin!

letztlich kann group by nicht viel mehr als das distinct.

Logisch. Beide fassen mehrer Spalten zu einer zusammen. Unterschiedlich ist nur die Art, nach welchen Kriterien.

will man die spalte beschreibung mit reinnehmen, würden genausoviele datensätze rauskommen, wie mit distinct. der vorteil von group by liegt wohl darin, dass man zusätzlich noch aggregat funktionen mit angeben kann, die sich nur auf die gebildeten gruppen beziehen.

Nicht ganz korrekt. Man _muss_ Aggregatfunktionen benutzen (außer für die in GROUP BY gelisteten Ergebnisspalten). MySQL hat in Abweichung von ANSI-SQL ein Feature "hidden columns", welches primär performancefördernd sein soll, und erlaubt, im SELECT auch Spalten aufzuführen, die nicht in GROUP BY stehen und auf die auch keine Aggregatsfunktion angewendet wird - damit man verläßliche Ergebnisse erhält, müssen diese Spalten dann aber bei jeweils allen zusammengefaßten Zeilen denselben Inhalt haben, ansonsten wird nach dem Zufallsprinzip irgendein Inhalt ausgewählt.

- Sven Rautenberg

--
Among the maxims on Lord Naoshige's wall, there was this one: "Matters of great concern should be treated lightly."
Master Ittei commented, "Matters of small concern should be treated seriously."
(Hagakure: The Way of the Samurai)