首頁 > 資料庫 > mysql教程 > 如何使用 SQL 高效檢索給定記錄 ID 的最新歷史位置?

如何使用 SQL 高效檢索給定記錄 ID 的最新歷史位置?

DDD
發布: 2024-12-07 04:46:12
原創
614 人瀏覽過

How to Efficiently Retrieve the Most Recent Historic Location for a Given Record ID Using SQL?

在Join 語句中使用MAX Date 檢索歷史位置

在取得特定記錄ID 的歷史位置時,使用者遇到了效能問題,並且結果中出現重複條目。使用者嘗試透過連接多個表並按 receive_id 進行過濾來解決此問題,但未實現預期輸出。

要解決此問題,建議修改查詢如下:

SELECT t1.received_id
     , t1.transaction_id
     , t1.date_modified
     , l.location
  FROM transactions t1
  JOIN ( SELECT received_id, MAX(date_modified) maxmodify FROM transactions GROUP BY received_id) max_record
    ON max_record.received_id = t1.received_id 
   AND max_record.maxmodify = t1.date_modified
  JOIN locations l
    ON l.location_id = t1.location_id
  JOIN received r
    ON r.received_id = t1.received_id
 WHERE t1.received_id = '1782'
 ORDER 
    BY t1.date_modified DESC
登入後複製

關鍵的更改涉及連接事務表兩次:一次用於主查詢,一次在子查詢中查找每個receive_id的最大date_modified 值。然後,該子查詢用於過濾主查詢並僅傳回具有最新 date_modified 值的行。

此技術的核心封裝在以下通用模式中:

SELECT x.*
  FROM my_table x
  JOIN (SELECT id,MAX(thing) max_thing FROM my_table GROUP BY id) y 
    ON y.id = x.id 
   AND y.max_thing = x.thing;
登入後複製

此方法有效地消除了重複條目,並提供了僅顯示每個記錄ID 和位置的最新修改時間的預期結果。

以上是如何使用 SQL 高效檢索給定記錄 ID 的最新歷史位置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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