Vinzenz Mai: GROUP BY und nicht aggregierte Spalten

Beitrag lesen

Hallo,

Wie kommt es eigentlich, dass man bei MSSQL und Oracle alle ausgewählten spalten in der GROUP BY Klausel angeben muß,

muss man ja gar nicht. Nur alle Spalten, auf die keine Aggregatsfunktion angewandt wird. Das ist übrigens im SQL-Standard so festgelegt.

bei MySQL jedoch auf nur EINE Spalte Gruppieren kann?
Ich finde die MySQL-Variante deutlich angenehmer.

Ich halte dies eher für einen Bug als ein Feature. Es führt immer wieder zu Fragen hier im Forum, weil eine Abfrage nicht das Ergebnis liefert, was der Benutzer erwartet.

Wenn eine Spalte innerhalb der Gruppe verschiedene Werte aufweist, ist der von MySQL zurückgegebene Wert nicht vorhersagbar. SQL-Novizen, die nur MySQL kennen, nehmen an, es würde immer der Wert zurückgegeben, den sie bei ihren ein, zwei Testabfragen erhalten haben und der zufälligerweise der Wert ist, den sie haben möchten, ein Beispiel: </archiv/2006/8/t134684/#m873900>

Nein, was MySQL da macht, ist für mich - auch wenn das Verhalten dokumentiert ist - keine besonders gute Idee.

Freundliche Grüße

Vinzenz