我有表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用户,并检索该对话的最后一条记录。 有什么建议吗?
顺便说一下,我的英语很糟糕,我希望你有这个主意。答案 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;