FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Supermoderator
|
Ur en tabell skulle jag ha ut ett gäng rader med hjälp av en outer join och en group by. Det relevanta som skiljer sig mellan de enskilda grupperade raderna är ID och en tids / datum-märkning. Eftersom jag endast ville ha den senaste raden ur varje grupp så körde jag en separat gruppering av en dubblett på den berörda tabellen där jag plockade ut max(ID) och sedan vanlig inner join mot den andra kopian, går det att göra på annat vis?
__________________
Full-stack developer, free for smaller assignments |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
Vilken rad i varje grupp är det som mysql väljer när man grupperar resultat? Det är den första raden, alltså den som blev inlagd först, eller om du sorterar tabellen, efter den sortering som blir inom varje grupp. För att slippa sortera om raderna eller bygga om tabellen kan man gå över en temporär tabell, ungefär såhär:
select * from( (select * from tabell order by x) as t1) group by y. Hoppas det var ungefär det du undrade över. |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Supermoderator
|
Mjo, det är ungefär så jag gör nu, undrade mest om man kan slippa en subquery och temporär tabell. Group by plockar ju som du säger alltid ut den första raden oavsett sortering, vore bra om man kunde tvinga den att plocka ut den sista direkt istället.
__________________
Full-stack developer, free for smaller assignments |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Klarade millennium-buggen
|
Det är nog så här man får göra.
Manualen ger inget hopp heller: http://dev.mysql.com/doc/refman/5.1/en/exa...-group-row.html Om grupperingskriterierna är konstanta så kan du kan ju alltid lägga till ett event som uppdaterar en tabell som enbart innehåller den sist skapade raden i varje grupp. Kräver att uppdateringarna är få jämfört med läsningarna för att det ska var någon poäng. |
||
![]() |
![]() |
Svara |
|
|