Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对mysql表进行分组时检索最后一条记录_Mysql_Sql_Group By_Greatest N Per Group - Fatal编程技术网

对mysql表进行分组时检索最后一条记录

对mysql表进行分组时检索最后一条记录,mysql,sql,group-by,greatest-n-per-group,Mysql,Sql,Group By,Greatest N Per Group,我有表t_消息,它的收集会话在用户和用户之间进行 这是桌子的结构 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

我有表t_消息,它的收集会话在用户和用户之间进行

这是桌子的结构

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 结果是

id_message sender_user_id receiver_user_id message 3 2 1 test 3 它显示了用户1和用户2的对话组,但没有显示用户1和用户2的对话。它只是显示用户2或发件人的最后一次对话

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


哦,顺便说一句,我对我糟糕的英语感到非常抱歉,我希望你明白了。

你可以与发送者和接收者交谈

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;

欲望结果记录是4吗?是的,所以我想要的结果是。会话组包含最后一个会话。
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;