MySQL 關聯表取最新一條記錄方案

雪花飄發表於2020-05-12
  1. 初始方案一,先排序再分組
    select id,name,handle_time from A inner join (select id,handle_time from B order by handle_time desc) tmp on A.id=tmp.id group by id
    這是網上找的解決方案,先排序好,再進行分組,但是結果卻不可行。經實踐測試發現,子查詢是排序了,但是進行 inner join 再 group by,handle_time 還是取的分組裡的最小值。
  2. 方案二,取最大時間值進行分組
    select id,name,handle_time from A inner join (select id,max(handle_time) as handle_time from B group by id) tmp on A.id=tmp.id order by handle_time desc
    測試證明這個方案是可行的,通過網上找資料發現 mysql5.7 之前方案一是可行的,到 mysql5.7 後只能使用方案二了。

試問有更好的方案嗎?

本作品採用《CC 協議》,轉載必須註明作者和本文連結

雪花飄

相關文章