Dies ist eine Variante des „größten-n-pro-Gruppe“-Problems, das mehrmals pro Woche bei StackOverflow auftritt.
SELECT
a1.accessid,
a1.date,
a1.time
FROM
accesslog a1
LEFT OUTER JOIN
accesslog a2
ON (a1.accessid = a2.accessid AND a1.userid = a2.userid
AND (a1.date > a2.date OR a1.date = a2.date AND a1.time > a2.time))
WHERE a1.userid = '1234'
AND a2.accessid IS NULL;
Dies funktioniert so, dass wir versuchen, eine Zeile (a2) zu finden, die dieselbe Zugriffs- und Benutzer-ID und ein früheres Datum oder eine frühere Uhrzeit als die Zeile a1 hat. Wenn wir keine frühere Zeile finden können, muss a1 sein die früheste Zeile.
Bezüglich Ihres Kommentars habe ich es gerade mit den von Ihnen bereitgestellten Beispieldaten versucht. Hier ist, was ich bekomme:
+----------+------------+----------+
| accessid | date | time |
+----------+------------+----------+
| 1 | 2009-08-15 | 01:01:01 |
| 2 | 2009-09-01 | 14:01:01 |
+----------+------------+----------+
Ich verwende MySQL 5.0.75 unter Mac OS X.