Select the Latest Message Between the communication of two user in mysql

后端 未结 6 1886
旧时难觅i
旧时难觅i 2020-12-17 03:33

I have a simple table maintaining messages between users. The table structure looks like

     sender    receiver   message   sendtime
      1          2              


        
6条回答
  •  孤城傲影
    2020-12-17 03:50

    SELECT data.* FROM 
    (SELECT MAX(sendtime) AS sendtime 
             FROM data 
             WHERE 1 IN (sender,receiver)
             GROUP BY IF (1 = sender,receiver,sender)) AS latest
    LEFT JOIN data ON latest.sendtime = data.sendtime AND 1 IN (data.sender, data.receiver)
    GROUP BY IF (1 = data.sender,data.receiver,data.sender)
    

    I recommend to use unique sequence id in your table to avoid external GROUP BY. If you have incrementing unique message_id (i.e. bigger message_id corresponds to later sendtime), the query would be much simpler:

    SELECT data.* FROM 
    (SELECT MAX(message_id) AS message_id 
             FROM data 
             WHERE 1 IN (sender,receiver)
             GROUP BY IF (1 = sender,receiver,sender)) AS latest
    LEFT JOIN data USING(message_id)
    

提交回复
热议问题