我想通過命令讓我的頭與組,通常我試圖選擇一個用戶的所有消息,按主題分組,然後顯示他們 - 就像臉書是如何做的它。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