select last message of conversation for each conversation in mysql

前端 未结 4 782
猫巷女王i
猫巷女王i 2021-01-20 03:10

my query:

SELECT *
  FROM messages_status mst
       INNER JOIN messages msg 
             ON mst.msg_id=msg.id
 WHERE mst.user_id = 1 
       AND mst.status         


        
4条回答
  •  独厮守ぢ
    2021-01-20 03:37

    Check this out:

    SELECT *
      FROM messages_status mst
           INNER JOIN (SELECT messages.* FROM messages INNER JOIN (
                        SELECT sender_ID,conv_id,MAX(created_at) as maxtime FROM messages
                        GROUP BY sender_ID,conv_id) as t1 ON
                        t1.sender_id = messages.sender_id AND t1.conv_id = messages.conv_id AND 
                        t1.maxtime = messages.created_at) msg 
                        ON mst.msg_id=msg.id
    WHERE mst.user_id = 1 AND mst.status NOT IN (0,3)
    ORDER BY msg.created_at DESC
    

    this is the link

提交回复
热议问题