我正试图通过group by命令来解决问题,基本上我正在尝试选择用户的所有消息,按主题对它们进行分组然后显示它们 - 就像面部书一样。
结果应包含最新的邮件ID,发件人的ID,日期以及该主题中邮件的总数。
消息表可能如下所示:
message ------- id sender_id subject created_at
因此,结果应显示按同一主题分组的所有用户消息。
答案 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分组,按照我认为你喜欢的方式将消息分组在一起