Vinzenz Mai: GROUP BY-Queries

Beitrag lesen

Hallo Günther,

Ja, Datum und Uhrzeit wird bei jedem Datensatz gespeichert - habe ich vergessen zu erwähnen, entschuldige bitte.

und welche MySQL-Version?

Sortierung nach DATETIME-Spalte wäre also möglich, um das herauszufinden.

Sortierung ist "irrelevant":

Beispiel:

user_id | punktzahl | zeit
----------------------------------------
1       | 2         | 12.10.2006 14:30
1       | 5         | 02.11.2006 08:40
1       | 1         | 27.04.2006 22:00
1       | 4         | 08.01.2006 14:47
2       | 5         | 17.06.2006 11:26
2       | 0         | 22.10.2006 11:26
2       | 2         | 17.12.2006 11:26

SELECT  
    p1.user_id,  
    p1.punktzahl,  
    p1.zeit  
FROM punkte p1                     -- Aliasnamen für die Tabelle punkte, auf  
                                   -- die "außen" wie "innen" zugegriffen wird  
WHERE zeit = (  
    SELECT MAX(p2.zeit)            -- Suche den neuesten Zeitpunkt  
    FROM punkte p2                 --  
    WHERE p1.user_id = p2.user_id  -- für jeden Benutzer  
)

Ergebnis:

user_id | punktzahl | zeit
----------------------------------------
1       | 4         | 08.01.2006 14:47
2       | 2         | 17.12.2006 11:26

Ein ganz normales korreliertes Subselect, wie von mir bereits verlinkt.

Voraussetzung: MySQL 4.1 und neuer.

Freundliche Grüße

Vinzenz