GROUP BY 分組后得到最新即時間最大的一條數據(需添加limit才可生效)


當使用GROUP BY 分組,默認返回的數據是組中最小的記錄即id最小的數據,

當開發中經常會需要分組后將最新的數據放在前面,

為了實現需求,使用了嵌套查詢,分別使用order by來排序

SELECT
    id,
    from_id,
    to_id,
    conversation_id,
    created_date,
    has_read,
    content
FROM
    ( SELECT * FROM message WHERE from_id = 6 OR to_id = 6 ORDER BY created_date DESC) AS tt 
GROUP BY
    conversation_id 
ORDER BY
    created_date DESC

 

 但執行結果依然是id最小的那條數據 

 

 

最終添上limit max_size 后才生效

SELECT
    id,
    from_id,
    to_id,
    conversation_id,
    created_date,
    has_read,
    content
FROM
    ( SELECT * FROM message WHERE from_id = 6 OR to_id = 6 ORDER BY created_date DESC limit 100) AS tt 
GROUP BY
    conversation_id 
ORDER BY
    created_date DESC

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM