我创建了 2 个表格消息和对话。
会话表将为发送和接收消息的两个用户创建一个唯一 ID。
消息表将包含用户消息的所有信息。
对话表
conversation_id | user_id1 | user_id2 |last_message_id
1 5 1 4
2 5 2 5
message_id | conversation_id | sender_id | message | created_time
1 1 5 MSG A 2012-06-10 00:20:04
2 1 5 MSG B 2012-06-10 00:20:21
3 1 5 MSG C 2012-06-10 00:21:09
4 1 1 MSG D 2012-06-10 00:22:23
5 2 5 MSG E 2012-06-10 00:25:16
我想要的输出:
sender_id | message | created_time
5 MSG E 2012-06-10 00:25:16
1 MSG D 2012-06-10 00:22:23
我尝试了什么:
SELECT * FROM conversation c, messages m
WHERE c.user_id1='$userid' OR c.user_id2='$userid'
AND c.last_message_id=m.message_id
ORDER BY created_time DESC
但是这个查询没有显示正确的结果。
我们是否也需要像以下这样的东西来分组?
SELECT * FROM TABLE
WHERE CONDITION
(SELECT MAX(created_time)
FROM TABLE
GROUP BY SOMEFEILD)
order by time desc