首頁 > 資料庫 > mysql教程 > 如何使用內部聯結檢索所有服務的最新狀態?

如何使用內部聯結檢索所有服務的最新狀態?

Barbara Streisand
發布: 2025-01-05 13:49:40
原創
755 人瀏覽過

How to Retrieve the Latest Status for All Services Using an Inner Join?

從兩個具有內連接的表中選擇最新狀態

當您有兩個包含相關數據的表時,有必要檢索特定資訊來自兩個表。在此場景中,您有兩個表:服務和狀態。服務表儲存名稱和 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中文網其他相關文章!

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