我有两张桌子.
其中一个称为“对话”的数据如下.
ConversationID Sender Reciever
1 bla1 bla2
2 bla1 bla3
3 bla1 bla4
另一种称为“消息”的数据如下.
MessageID MessageText TimeAddedMessage ConversationID
1 helo 2012-03-12 13:00:00 2
2 helo 2012-03-12 13:01:00 1
3 helo 2012-03-12 13:02:00 3
4 helo 2012-03-12 13:03:00 3
5 helo 2012-03-12 13:04:00 2
我想从查询中得到的结果如下:
5 helo 2012-03-12 13:04:00 2
4 helo 2012-03-12 13:03:00 3
2 helo 2012-03-12 13:01:00 1
这意味着我们需要每个对话的最新评论(按时间排序DESC).
任何帮助赞赏.
解决方法:
试试 –
SELECT m2.*, c.Sender
FROM (
SELECT m1.ConversationID, MAX(m1.MessageID) AS MessageID
FROM Messages m1
GROUP BY m1.ConversationID
) latest_msg
INNER JOIN Messages m2
ON latest_msg.MessageID = m2.MessageID
AND latest_msg.ConversationID = m2.ConversationID
INNER JOIN Conversations c
ON m2.ConversationID = c.ConversationID
ORDER BY m2.MessageID DESC
编辑我已修改上述查询以包含Conversations表中的Sender值.我注意到你的谈话结构有点奇怪.对话是从一个用户到另一个用户,但是无法识别哪个用户编写了每个消息.这是故意的吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。