Moin moin,
ich hab folgendes SQL Problem und komm nicht weiter: Ich schraube an einen SQL-Befehl der mir anhand einer Liste von Guids nur die Datensätze mit der höchsten HistoryId liefert.
Ich habe eine Liste von Guids z.B. a und c.
Als Ergebnis erwarte ich dann:
2 a 2 4 c 3
id guid history_id
1 a 1
2 a 2
3 b 1
4 c 3
5 c 1
6 d 1
7 e 1
8 e 2
Ich hab schon etliche Kombinationen mit Gruppierungen und einen Selfjoin ausprobiert, bekomme aber nie nur den höchsten Datensatz bei mehreren Einträgen. Hört sich ja eigentlich einfach an aber ich kriegs nicht hin. Kann mir einer einen Denkanstoß geben?
verwendetes Datenbanksystem: MySql
id = Autowert
also so richtig kann ich leider nicht folgen. wenn du nur die höchste id haben möchtest würde ich dies so tun.
SELECT guid, MAX(history_id)
FROM table
GROUP BY guid
wahrscheinlich hab ich dich aber nicht richtig verstanden
wahrscheinlich hab ich dich aber nicht richtig verstanden
Das geht mir ähnlich. Könntet Du nicht wenigstens einen Deiner Versuche dokumentieren, damit wir Dein Ziel besser verstehen? Jürgen
select a.id, b.guid, hist_id from
history a
(select max(history_id) as hist_id, guid from history group by guid) b
where a.guid = b.guid
and a.history_id = b.hist_id;
Untested. Auch müssen die Values distinct sein, sonst bekommst du für folgendes z.B. 2 Reihen:
1 a 2
2 a 2
Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!
YARRRRRR!
Hallo GMLOD,
gerade wollte ich auf deine Vorgänger antworten als deine Lösung kam. Sie hat super funktioniert nur noch ein Komma vor dem Subselect und ein In() als Kriterium und das wars. Danke!