Laden...

SQL-Abfrage: letzten Eintrag(max) mit Kriterium

Erstellt von deemax vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.668 Views
D
deemax Themenstarter:in
65 Beiträge seit 2004
vor 15 Jahren
SQL-Abfrage: letzten Eintrag(max) mit Kriterium

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

I
302 Beiträge seit 2008
vor 15 Jahren

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

J
3.331 Beiträge seit 2006
vor 15 Jahren

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

1.200 Beiträge seit 2007
vor 15 Jahren
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!

D
deemax Themenstarter:in
65 Beiträge seit 2004
vor 15 Jahren

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!