Moin!
Logisch. Beide fassen mehrer Spalten zu einer zusammen. Unterschiedlich ist nur die Art, nach welchen Kriterien.
nicht wirklich, erstens werden nicht mehrere spalten zu einer zusammengefasst.
Wenn man ohne GROUP BY oder DISTINCT zwei oder mehr Ergebniszeilen hat, und mit diesen nur eine einzige - was ist das denn anderes als "zusammenfassen"?
und zweitens bringt group by genau die gleiche ergebnisliste hervor, wie es auch distinct machen würde.
Aber nur bei diesem konkreten Beispiel:
SELECT DISTINCT spalte1, spalte2
SELECT spalte1, spalte2 GROUP BY spalte1, spalte2
sind die Ergebnisse identisch.
Wenn du das SELECT änderst, kriegst du Unterschiede:
SELECT DISTINCT spalte1, spalte2, spalte3
ist was anderes als
SELECT spalte1, spalte2, spalte3 GROUP BY spalte1, spalte2
Das letztere funktioniert nur bei MySQL - und da auch nur dann sicher, wenn spalte3 eine 1:1-Werteabhängigkeit von spalte1 oder spalte2 hat.
das resultat ist letztlich also genau das gleiche, von den aggregatfunktionen abgesehen. und nur darin liegt der unterschied und der sinn von group by.
Mit GROUP BY kriegt man überwiegend andere Ergebnisse hin, als mit DISTINCT. Diese beiden Funktionen sind nicht gleich.
Nicht ganz korrekt. Man _muss_ Aggregatfunktionen benutzen (außer für die in GROUP BY gelisteten Ergebnisspalten).
bei group by muss man keine aggregatfunktionen benutzen, man will es.
Du bist MySQL-verseucht. Nimm mal PostgreSQL und probiere das 3-Spalte-GROUP-BY-Statement von oben. Sollte nicht funktionieren.
- 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)