我想通过命令让我的头与组,通常我试图选择一个用户的所有消息,按主题分组,然后显示他们 - 就像脸书是如何做的它。Facebook消息结果集像
结果应该包含最新的消息ID,发件人的ID,日期以及该主题中消息的总数。
消息表可以如下所示:
message ------- id sender_id subject created_at
所以结果应该是在相同主题分组的所有用户的邮件。
我想通过命令让我的头与组,通常我试图选择一个用户的所有消息,按主题分组,然后显示他们 - 就像脸书是如何做的它。Facebook消息结果集像
结果应该包含最新的消息ID,发件人的ID,日期以及该主题中消息的总数。
消息表可以如下所示:
message ------- id sender_id subject created_at
所以结果应该是在相同主题分组的所有用户的邮件。
SELECT sender_ID, subject, MAX(id), MAX(created_at), COUNT (id)
FROM message
WHERE recipient_id = current_user_id OR sender_id = current_user_id
GROUP BY subject, sender_ID, receipient_id
ORDER BY MAX(created_at) DESC
与GROUP BY,任何不是在GROUP BY子句必须在聚合函数(例如COUNT,SUM,MAX等)在SELECT语句。
编辑 - 意识到上面的Group并不完全符合我的想法(虽然示例结果集会有所帮助),所以有人认为可以简化它。在创建消息时,您可以设置额外的列值 - conversation_id。当一个新消息被创建并被重新用于任何回复时,这将被分配给一个新值。然后,您可以通过conversation_id按照我认为您希望他们成为的方式对消息进行分组。
有关少量用户和消息的消息表中的数据集示例,请您提供您想要返回的结果集示例?目前我还不清楚这些应该如何在理想输出中组合在一起 – 2010-03-02 19:32:50