SELECT * FROM my_table -- standard stuff
WHERE user_2 = 22 -- predicate
ORDER BY timestamp DESC -- this means highest number (most recent) first
LIMIT 1; -- just want the first row
編集:
ちなみに、元のクエリが機能しなかった理由がわからない場合は、部分を分解してみましょう。
-
my_table
からいくつかのものを選択します ... - ここで
user_2
=22 - および
timestamp
=(いくつかの値、とりあえず脇に置いておきましょう) - 制限1
さて、そのtimestamp
に戻ります 値、それはあなたのサブクエリから来ます:
SELECT MAX( timestamp ) FROM my_table
このサブクエリは、user_2
に基づく行を制限しないことに注意してください。 -テーブル全体の最大タイムスタンプを尋ねます 。その最大タイムスタンプは、上記の表の最初のタイムスタンプです:(user_1 =23、user_2 =25、timestamp =2012-08-10 22:00:00)。
それでは、それをトップレベルのクエリに戻しましょう:
-
my_table
からいくつかのものを選択します ... - ここでuser_2=22
- およびタイムスタンプ=2012-08-10 22:00:00
- 制限1
...そしてあなたはそのような列がないのを見ることができます。