如何使用 GROUP BY檢索每個使用者群組的最新消息
在您的資料庫中,您有一個名為「messages」的表,其中包含下列列:
你的目標是提取來自每個使用者群組的最新消息。例如,這類似於您在點擊特定對話之前在 Facebook 收件匣中看到的訊息清單。
最初,您嘗試使用以下查詢,該查詢按from_id 列對訊息進行分組:
SELECT * FROM messages GROUP BY from_id
但是,您注意到此查詢返回最舊的訊息而不是最新的訊息。
要克服此限制,您需要確定最新的時間戳值對於每個訊息群組使用子查詢。然後,將此子查詢與主「訊息」表連接起來,僅過濾出最新訊息:
SELECT t1.* FROM messages t1 JOIN ( SELECT from_id, MAX(timestamp) timestamp FROM messages GROUP BY from_id ) t2 ON t1.from_id = t2.from_id AND t1.timestamp = t2.timestamp;
此修改後的查詢有效地識別每個群組中的最新記錄,為您提供所需的結果。
以上是如何在 SQL 中檢索每個使用者群組的最新消息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!