【发布时间】:2009-10-02 22:51:23
【问题描述】:
我有一个包含消息的 mysql 表:
id (INT)
sender_id (INT)
recipient_id (INT)
sent_time (INT)
read_time (INT)
body (TEXT)
我需要检索用户 X 从其他(不同)用户接收或发送给其他(不同)用户的最新消息列表。
换句话说,我想创建与其他用户的完整对话列表,按与给定用户交换的最后一条消息的 sent_time 排序。 最终结果(用 PHP 处理)会像这样:
array (
array (other_user_1_id, last_msg_sent_time, last_msg_is_read,
last_msg_is_to_me/from_me, number_of_messages*),
array (other_user_2_id, ... )
)
*) number_of_messages 是可选的,但很高兴拥有。
问题:我怎样才能最有效地做到这一点?创建一个单独的“对话”表并在每次有人发送或阅读消息时更新它,或者在“消息”表上创建一个单一但复杂的查询?如果是后者,查询会是什么样子?
【问题讨论】: