facebook消息结果集如

时间:2010-02-26 13:54:17

标签: postgresql facebook messages group-by

我正试图通过group by命令来解决问题,基本上我正在尝试选择用户的所有消息,按主题对它们进行分组然后显示它们 - 就像面部书一样。

结果应包含最新的邮件ID,发件人的ID,日期以及该主题中邮件的总数。

消息表可能如下所示:

message
-------
id
sender_id
subject
created_at

因此,结果应显示按同一主题分组的所有用户消息。

1 个答案:

答案 0 :(得分:1)

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子句中没有的任何内容都需要在SELECT语句中的聚合函数(例如COUNT,SUM,MAX等)中。

编辑 - 意识到上面的Group By并没有完全按照我的想法做到(例如结果集会有所帮助),所以人们想要简化这一点。在创建消息时,您可以设置其他列值 - conversation_id。在创建新消息时将其分配给新值,然后重新用于任何回复。然后你可以通过conversation_id分组,按照我认为你喜欢的方式将消息分组在一起