これは、StackOverflowで週に数回発生する「グループあたりの最大数」の問題のバリエーションです。
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;
これが機能する方法は、同じaccessidとuseridを持ち、行a1よりも早い日付または時刻を持つ行(a2)を見つけようとすることです。以前の行が見つからない場合、a1はである必要があります 最も早い行。
あなたのコメントを再確認してください、私はあなたが提供したサンプルデータでそれを試しました。これが私が得るものです:
+----------+------------+----------+
| accessid | date | time |
+----------+------------+----------+
| 1 | 2009-08-15 | 01:01:01 |
| 2 | 2009-09-01 | 14:01:01 |
+----------+------------+----------+
MacOSXでMySQL5.0.75を使用しています。