從兩個具有內連接的表中選擇最新狀態
當您有兩個包含相關數據的表時,有必要檢索特定資訊來自兩個表。在此場景中,您有兩個表:服務和狀態。服務表儲存名稱和 ID,而狀態表則追蹤與每個服務關聯的狀態和時間戳記。
要檢索每個服務的最新狀態,您可以使用內連線操作。目標是根據 service_id 列合併兩個表中的行,確保僅傳回最新的狀態資訊。
不幸的是,您提到的查詢僅檢索 service_id = 2 的服務的最新狀態。要解決此限制並檢索所有服務的最新狀態,請考慮以下修改後的 SQL 語句:
SELECT ser.id, ser.name, s.status, s.timestamp FROM Service ser INNER JOIN status AS s ON s.service_id = ser.id INNER JOIN ( SELECT service_id, MAX(timestamp) AS MaxDate FROM status GROUP BY service_id ) AS a ON a.service_id = s.service_id AND a.MaxDate = s.timestamp;
最終內部聯接中的子查詢消除了除每個服務的狀態以及最新時間戳記。透過比較service_ids並匹配最新的時間戳,可以保證查詢返回期望的結果:
id | name | status | timestamp |
---|---|---|---|
1 | Test1 | OK | October 15, 2015 09:08:07 |
2 | Test2 | OK | October 15, 2015 10:15:23 |
以上是如何使用內部聯結檢索所有服務的最新狀態?的詳細內容。更多資訊請關注PHP中文網其他相關文章!