首頁 > 資料庫 > mysql教程 > 如何使用 SQL 連線檢索每個服務的最新狀態?

如何使用 SQL 連線檢索每個服務的最新狀態?

Barbara Streisand
發布: 2025-01-04 22:16:44
原創
851 人瀏覽過

How to Retrieve the Latest Status for Each Service Using SQL Joins?

具有內部聯接和限制的最新狀態資料

此挑戰涉及從兩個表中檢索每個服務的最新狀態:服務和狀態。 Service 表包含服務訊息,而 Status 表保存帶有時間戳記錄的狀態更新。

要達成此目的,可以使用內部聯結基於 service_id 欄位來組合表格。然而,在為每項服務選擇最新狀態時就會出現挑戰。以下語句只擷取最後一個服務的最新狀態:

SELECT ser.id, ser.name, a.status, a.timestamp
from Service ser
  inner join (select * from status
              order by Status.timestamp
              DESC limit 1) as a
    on a.service_id = ser.id
登入後複製

要擷取每個服務的最新狀態,需要巢狀查詢:

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;
登入後複製

巢狀查詢擷取每個服務的最大時間戳,代表該服務的最新狀態。然後將結果與主查詢連接起來,以顯示每個服務的最新狀態資料。

使用此方法,可以實現所需的輸出:

id name status timestamp
1 Test1 OK October, 15 2015 09:08:07
2 Test2 OK October, 15 2015 10:15:23

以上是如何使用 SQL 連線檢索每個服務的最新狀態?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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