dedlfix: GROUP BY - höchsten Wert in anderer Spalte nicht verlieren

Beitrag lesen

Tach!

Ich möchte ausgeben, wer zuletzt welches Update erhalten hat. Dazu erwarte ich für dieses Beispiel folgendes Ergebnis:

Wenn die update-Werte Zahlen oder andere aufsteigende Werte sind, dann MAX().

SELECT `id`, `update`, `login`
FROM `user_updated_log`
WHERE 1
GROUP BY `login`
ORDER BY `update`

Offensichtlich wird die Information zu update beim Grouping verworfen, sodass die anschließende Sortierung nach update keinen Sinn mehr hat.

Nein, da wird nichts verworfen, das ist (dokumentiertes) MySQL-Verhalten. In anderen SQL-Dialekten darf man keine Felder selektieren, über die nicht gruppiert wurde. MySQL hingegen nimmt sich einfach irgendeinen Wert aus der Gruppe. Das kann man nur in Situationen verwenden, in denen man Redundanzen derart in der Datenmenge hat, dass da überall dieselben Daten drinstehen. Zum Beispiel in nicht normalisierten Daten.

dedlfix.