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

メンバー名によるmySQLグループ

    これがあなたが求めているものだと思います。

    SELECT messages.* 
      FROM 
      (SELECT MAX(lastseen) AS lastseen,IF ('Tom' = `from`,`to`,`from`) as otheruser FROM messages
        WHERE 'Tom' IN (`from`,`to`) GROUP BY otheruser
       )
    AS latest INNER JOIN messages ON latest.lastseen = messages.lastseen
                                 AND (('Tom' = messages.from AND latest.otheruser = messages.to)
                                     OR
                                     ('Tom' = messages.to AND latest.otheruser = messages.from))
    ORDER BY messages.lastseen
    DESC,`read`='no' limit 10
    

    'Tom'を変数に置き換えるだけです

    これにより、「Tom」または「Tom」にメッセージを送信した最新の10人のユーザーが返されます。




    1. MySQLトランザクションをテストする方法は?

    2. MariaDBでのCONCAT_WS()のしくみ

    3. PHPからMySQLクエリの実行時間を取得するにはどうすればよいですか?

    4. 日単位の2つのタイムスタンプ間のMySqlの違いは?