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

mysql-特定の条件を持つメッセージのスレッドリストのクエリ

    グループごとの最大値 が必要です 、Messagesに参加することで見つけることができます 各グループの識別(最大)タイムスタンプを識別するサブクエリへのテーブル:

    SELECT   Message.request_id,
             Sender.username   AS sender_name,
             Receiver.username AS receiver_name,
             Message.message   AS last_message,
             Message.timestamp AS last_timestamp
    FROM     Message NATURAL JOIN (
               SELECT   request_id,
                        sender_id,
                        receiver_id,
                        MAX(timestamp) timestamp
               FROM     Message
               GROUP BY request_id, sender_id, receiver_id
             ) t
        JOIN User Sender   ON   Sender.id = Message.sender_id
        JOIN User Receiver ON Receiver.id = Message.receiver_id
    ORDER BY Message.request_id, last_timestamp DESC
    

    sqlfiddle でご覧ください 。

    上記の私のコメント




    1. PSQLException:ResultSetが適切に配置されていません。おそらく、次に呼び出す必要があります

    2. datetime2データ型をdatetimeデータ型に変換すると、値が範囲外になります

    3. MySQLWorkbenchクエリのコメントフォントの色を変更する

    4. 異なるデータベースの2つのテーブルを同期する-MySQL