我有表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
with that table, i have an objective to collect group of conversation for user, and as example i want to colletct groups of conversation beetween user 1 and user 2. using this query
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 或发件人的最后一次对话。
我需要什么查询来收集用户之间的一组对话,并检索该对话的最后记录。 有什么建议吗?
哦,顺便说一句,我很抱歉我的英语不好,我希望你明白。
最佳答案
您可以连接发送者和接收者以形成对话
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;
关于mysql - mysql表分组时检索最后一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24462139/