在分组mysql表时检索最后一条记录

时间:2014-06-27 23:36:14

标签: mysql sql group-by greatest-n-per-group

我有表t_message,它是用户和用户之间的收集对话。

这是表格结构。

 id_message sender_user_id receiver_user_id message 
1          2              1                test 1
2          1              2                test 2
3          2              1                test 3
4          1              2                test 4

使用该表,我的目标是为用户收集对话组,例如我想使用此查询来收集用户1和用户2之间的对话组

select * from ( select * from t_message where receiver_user_id = 1 order by id_message DESC ) group by sender

,结果是

id_message sender_user_id receiver_user_id message 
3          2              1                test 3

它显示了用户1和用户2之间的对话组,但未显示用户1和用户2之间的对话。它只显示来自用户2或发件人的最后一个对话。

我需要收集一组对话beetwen用户,并检索该对话的最后一条记录。 有什么建议吗?

顺便说一下,我的英语很糟糕,我希望你有这个主意。

1 个答案:

答案 0 :(得分:0)

您可以联系发件人和收件人以形成对话

select a.id, a.conversation, b.sender_user_id, b.receiver_user_id, b.message
from (
  select max(id_message) id,
         if(sender_user_id>receiver_user_id,
            concat(receiver_user_id,',',sender_user_id),
            concat(sender_user_id,',',receiver_user_id)) conversation
  from t_message
  group by conversation) a
join t_message b on a.id = b.id_message;

fiddle