Dette er en variation af det "største-n-per-gruppe"-problem, der dukker op på StackOverflow flere gange om ugen.
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;
Måden dette fungerer på er, at vi forsøger at finde en række (a2), der har samme accessid og bruger-id, og en tidligere dato eller tid end rækken a1. Når vi ikke kan finde en tidligere række, så skal a1 være den tidligste række.
Med hensyn til din kommentar, jeg har lige prøvet det med de prøvedata, du har givet. Her er hvad jeg får:
+----------+------------+----------+
| accessid | date | time |
+----------+------------+----------+
| 1 | 2009-08-15 | 01:01:01 |
| 2 | 2009-09-01 | 14:01:01 |
+----------+------------+----------+
Jeg bruger MySQL 5.0.75 på Mac OS X.