gpt4 book ai didi

mysql - 获取一位用户在不同聊天中的所有对话

转载 作者:行者123 更新时间:2023-11-29 18:04:36 26 4
gpt4 key购买 nike

我的问题是 this 的延续发布。

在那里,您可能已经注意到标记为已回答的查询并没有真正输出消息正文本身。

对于我的情况,我需要输出 WhatsApp 风格的“聊天” View 。

这个查询几乎解决了它:

SELECT T1.user2_id, users.userName, users.ava, max(cdate) maxDate FROM
(SELECT user_to user2_id, max(msg_time) cdate
FROM chat WHERE user_from=:id
GROUP BY user_to
union distinct
(SELECT user_from user2_id, max(msg_time) cdate
FROM chat WHERE user_to = :id
GROUP BY user_from)) T1
inner join users on (users.userID = T1.user2_id)
group by T1.user2_id
order by maxDate desc

但剩下的 Unresolved 问题是:如果我只是将 msg(“msg”保存实际消息并且是“chat”表中的一列)添加到每个 SELECT 中,则查询会选择错误的消息。虽然我理解为什么会发生这种情况,但我无法真正让它正常工作。感谢您的建议!

最佳答案

只是将其包装在另一个 SELECT + JOIN 中。

查询的具体作用:获取给定用户的所有聊天,获取每个聊天的最新消息(无论是登录用户发送的消息,还是登录用户从另一个用户接收的消息(结果不会加倍) place)),按降序日期对所有聊天进行排序,即最近的在顶部。

$sql="
SELECT T2.maxDate, T2.user2_id, T2.ava, T2.userName,chat.user_to, chat.user_from,chat.body,chat.viewed FROM
(SELECT T1.user2_id, users.userName, users.ava, max(cdate) maxDate FROM
(SELECT chat.user_to user2_id, max(msg_time) cdate
FROM chat WHERE chat.user_from=18
GROUP BY chat.user_to
union distinct
(SELECT chat.user_from user2_id, max(msg_time) cdate
FROM chat WHERE chat.user_to=18
GROUP BY chat.user_from)) T1
inner join users on (users.userID = T1.user2_id)
group by T1.user2_id
order by maxDate desc) T2
join chat on (T2.maxDate = chat.msg_time) ORDER BY T2.maxDate DESC";

关于mysql - 获取一位用户在不同聊天中的所有对话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47999357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com