首頁 > 資料庫 > mysql教程 > 如何有效率地連接 MySQL 歷史表中的最新行?

如何有效率地連接 MySQL 歷史表中的最新行?

Linda Hamilton
發布: 2025-01-02 15:39:40
原創
500 人瀏覽過

How to Efficiently Join the Most Recent Row from a Historical Table in MySQL?

加入MySQL 中的最新行

給定兩個表,customer 和customer_data,其中後者包含客戶更改的歷史記錄,當前的任務是檢索客戶訊息,同時確保僅將customer_data 中的最新條目連接到客戶表中的每個客戶。

要實現此目的,請考慮利用WHERE 子句代替主查詢主體,因為它提供更好的效能和程式碼可讀性。這是一個最佳化的查詢:

SELECT c.*,
       CONCAT(title, ' ', forename, ' ', surname) AS name
FROM customer c
LEFT JOIN customer_data d
ON c.customer_id = d.customer_id
WHERE d.customer_id = (
    SELECT MAX(customer_id)
    FROM customer_data
    WHERE customer_id = c.customer_id
)
LIMIT 10, 20;
登入後複製

此查詢透過在 WHERE 子句中進行過濾,確保僅將 customer_data 中的最新行加入 customer 中的每個客戶。 LEFT JOIN 確保所有來自 customer 的客戶都包含在結果中,即使他們在 customer_data 中沒有相應的條目。

關於您對同時使用 CONCAT 和 LIKE 的擔憂,您是對的。 CONCAT 連接字串,產生的字串可以與 LIKE 運算子一起使用來執行模式匹配。您的查詢在這方面是有效的。

以上是如何有效率地連接 MySQL 歷史表中的最新行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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