Toto je variace problému „největšího počtu na skupinu“, který se na StackOverflow objevuje několikrát týdně.
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;
Funguje to tak, že se snažíme najít řádek (a2), který má stejné accessid a userid a dřívější datum nebo čas než řádek a1. Když nemůžeme najít dřívější řádek, musí a1 být první řádek.
Pokud jde o váš komentář, právě jsem to zkusil s ukázkovými údaji, které jste poskytli. Zde je to, co dostanu:
+----------+------------+----------+
| accessid | date | time |
+----------+------------+----------+
| 1 | 2009-08-15 | 01:01:01 |
| 2 | 2009-09-01 | 14:01:01 |
+----------+------------+----------+
Používám MySQL 5.0.75 na Mac OS X.