Detta är en variant av problemet "största-n-per-grupp" som dyker upp på StackOverflow flera gånger i veckan.
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;
Sättet detta fungerar är att vi försöker hitta en rad (a2) som har samma accessid och användar-id, och ett tidigare datum eller tidpunkt än raden a1. När vi inte kan hitta en tidigare rad måste a1 vara den tidigaste raden.
Angående din kommentar, jag har precis provat den med exempeldatan du angav. Det här är vad jag får:
+----------+------------+----------+
| accessid | date | time |
+----------+------------+----------+
| 1 | 2009-08-15 | 01:01:01 |
| 2 | 2009-09-01 | 14:01:01 |
+----------+------------+----------+
Jag använder MySQL 5.0.75 på Mac OS X.