Mailinglisten-Archive |
> ist es möglich die Zeile einer Gruppierung auszuwählen, die den höchsten > Wert einer bestimmten Spalte hat? > > Hintergrund ist eine versionierte Tabelle, mit einer Spalte 'id' und eine > Spalte 'version'. Wenn ich nun alle > aktuellen Datensätze, also die mit der höchsten Version, abfragen will, > benutze ich folgende query: > > SELECT id, version FROM tabelle GROUP BY id HAVING version=max(version) > > Hierbei 'unterschlägt' die db aber manchmal einige Datensätze, was, glaube > ich, daran liegt, das zuerst gruppiert > wird, und dann 'version' mit 'max(version)' verglichen wird. Ist beim > gruppieren zufällig nicht die Zeile mit dem > Maximalwert von 'version' gewählt worden, fällt der Datensatz weg. > > Was ich also benötige ist ein Weg, beim gruppieren nach 'id' die Zeile mit > dem höchsten Wert von 'version' zu > wählen. Und zwar die ganze Zeile, ein 'select id, max(version) .... group by > id' würde nicht helfen, da dann ja > nur die der Maxwert der Spalte gewählt wird, nicht die Zeile mit dem > Maxwert! > > Gibt es einen Weg das in MySql in einem Query zu lösen? Ohne SubSelects? ähm ... ich überleg die ganze zeit ob cih etwas übersehe, weil die lösung doch eigentlich ganz kalr vor einem liegt.. SELECT `id`, MAX(`version`) AS `version` FROM `tabelle` GROUP BY `id` http://www.mysql.com/doc/en/Group_by_functions.html -- Sebastian Mendel www.sebastianmendel.de www.tekkno4u.de www.nofetish.com -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive