webForumDet fria alternativet
Logga in / Bli medlem

"Sortera" GROUP BY

Databaser & SQL

3 svar · 169 visningar · startad av Joakim

Medlem sedan dec. 199982 inlägg
Trådstart#1

Tjo!

Hjärnan vill sova men jag vill inte ge upp =)
Skall göra processen kort:

Exempeltabell med följande kolumner:

id, id2, innehall

Exempel på poster:

1, 1, Gammal
2, 1, Nyare
3, 1, Nyast
4, 2, Jättegammal
5, 2, Jätteny

Dessa rader vill jag gruppera efter id2 och visa den posterna som har högst id. En select som på ovanstående innehåll returnerar:

3, 1, Nyast
5, 2, Jätteny

i princip SELECT * FROM t GROUP BY id2 HAVING MAX(id) om ni förstår vad jag menar. Hur gör jag?

Tackar på förhand

// Joakim

Medlem sedan dec. 200012 464 inlägg
#2

Det går inte med en fråga i Mysql (om du inte väntar tills dess att dom stöder subqueries). Du får bygga en temptabell med max(id) group by id2 och sedan göra en join mot den tabellen.

Medlem sedan dec. 199982 inlägg
#3

Typiskt..

Tanken bakom systemet är lite komplicerat men det är ju uppenbarligen enkelt när jag vill ha ut ett enda id2 med högst id, problemet är när jag vill lista dem.

Hur är tänket med en temp-tabell?

Man lär sig nåt nytt varje dag.. =)

Medlem sedan dec. 199982 inlägg
#4

Jag jobbar mig runt det. Får köra dubbla frågor och tänka om lite =)

377 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
125 ms — deklarationer (db)
122 ms — hämta statistik (db)
127 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)