sql >> データベース >  >> RDS >> Mysql

MySQL Select By Newest Timestamp

    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

    ...そしてあなたはそのような列がないのを見ることができます。



    1. クラウドテクノロジーに関する4つの一般的な神話

    2. FORCEPLANを使用してT-SQL結合のクエリオプティマイザをオーバーライドする

    3. javaからmysqlにデータベースを作成する

    4. MySQLの主キー