Il s'agit d'une variante du problème "plus grand-n-par-groupe" qui survient sur StackOverflow plusieurs fois par semaine.
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;
La façon dont cela fonctionne est que nous essayons de trouver une ligne (a2) qui a le même accessid et userid, et une date ou heure antérieure à la ligne a1. Lorsque nous ne pouvons pas trouver une ligne précédente, alors a1 doit être la première ligne.
Concernant votre commentaire, je viens de l'essayer avec les exemples de données que vous avez fournis. Voici ce que j'obtiens :
+----------+------------+----------+
| accessid | date | time |
+----------+------------+----------+
| 1 | 2009-08-15 | 01:01:01 |
| 2 | 2009-09-01 | 14:01:01 |
+----------+------------+----------+
J'utilise MySQL 5.0.75 sur Mac OS X.