首頁 > 資料庫 > mysql教程 > 如何有效率地檢索 MySQL 中每組的最後一行?

如何有效率地檢索 MySQL 中每組的最後一行?

Mary-Kate Olsen
發布: 2024-11-12 15:19:01
原創
307 人瀏覽過

How to Efficiently Retrieve the Last Row per Group in MySQL?

使用MySQL 檢索每組的「最後」行

問題:

找到更有效的方法來找出檢索MySQL表中每個組別的最後一行,使用類似的查詢至:

select * 
    from foo as a
    where a.id = (select max(id) from foo where uid = a.uid group by uid)
    group by uid;
登入後複製

潛在解決方案:

考慮此替代查詢:

SELECT t1.* FROM foo t1
  LEFT JOIN foo t2
    ON t1.id < t2.id AND t1.uid = t2.uid
WHERE t2.id is NULL;
登入後複製

解釋:

此查詢Left將表中的每一行與其後繼基於ID 欄位。如果不存在後繼(即,它是群組中的最後一行),則 t2.id 欄位將為 NULL。透過過濾 NULL,我們有效地隔離了每組的最後一行。

附加說明:

使用 EXPLAIN 分析原始查詢和替代查詢的查詢效能解決方案。

此方法對於大型資料集和複雜分組特別有用。對於更簡單的情況,其他方法可能更有效。

以上是如何有效率地檢索 MySQL 中每組的最後一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板