首頁 > 資料庫 > mysql教程 > 如何有效率地檢索連接語句中每筆記錄的最新位置資料?

如何有效率地檢索連接語句中每筆記錄的最新位置資料?

Susan Sarandon
發布: 2024-12-08 02:37:10
原創
807 人瀏覽過

How to Efficiently Retrieve the Most Recent Location Data for Each Record in a Joined Statement?

在連接語句中選擇最近的日期:歷史位置資料檢索故障排除

此查詢旨在檢索記錄的歷史位置和他們對應的日期。然而,當前的實作需要很長的時間來執行並產生重複的記錄。預期輸出是一個簡化的記錄清單及其最近位置。

原始查詢嘗試透過執行自連線操作來尋找與每個記錄 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
登入後複製

解釋

解釋
SELECT received_id, MAX(date_modified) AS maxmodify
FROM transactions
GROUP BY received_id
登入後複製

在此查詢中,我們引入一個公共表表達式(CTE)來尋找transactions表中每個記錄 id 的最大日期。 CTE 為:

然後,我們將原始交易表 (t1) 與 receive_id 欄位上的 CTE (max_record) 連接起來。此外,我們也對 maxmodify 欄位進行篩選,以確保僅包含最新日期的交易。這透過避免不必要的連接和重複來優化查詢。 透過這個最佳化的查詢,我們可以有效地取得每筆記錄的歷史位置,確保我們只檢索每個唯一記錄 ID 的最新位置。

以上是如何有效率地檢索連接語句中每筆記錄的最新位置資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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