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

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-12 15:19:01309瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn