連接MySQL 表以僅檢索最近的行
在資料管理系統中,連接表對於組合來自多個來源的資訊至關重要。處理歷史資料時,通常需要從連接表之一中擷取最新行。
考慮客戶資料庫的場景,其中客戶資料儲存在兩個表中:customer 和 customer_data。 customer 表包含基本的客戶訊息,而 customer_data 儲存對客戶設定檔的變更。要在表中顯示客戶的訊息,需要連接兩個表,但我們只需要 customer_data 中的最新行。
要達成此目的,您可以利用 MySQL 的 MAX() 函式和子查詢來尋找 customer_data 中最新行的 ID。該查詢看起來像這樣:
SELECT c.*, cd.value FROM customer c LEFT JOIN customer_data cd ON c.customer_id = cd.customer_id WHERE cd.customer_id = ( SELECT MAX(customer_id) FROM customer_data WHERE customer_id = c.customer_id )
此查詢首先從客戶表中檢索所有列(以 c. 為前綴)。然後,它與 customer_data 表(以 cd 為前綴)執行 LEFT JOIN,過濾 customer_data 中的行,僅包含每個客戶具有最大 customer_id 的行(由子查詢確定)。
此外,如在參考查詢中提到,您可以使用 CONCAT() 和 LIKE 來搜尋連接列中的特定值。在範例查詢中,CONCAT(title,' ',forename,' ',surname) 與字串 '%Smith%' 進行比較。這將傳回組合欄位中任意位置包含子字串「Smith」的所有客戶名稱。
以上是連接 MySQL 表時如何僅檢索最新行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!