具有內部聯接和限制的最新狀態資料
此挑戰涉及從兩個表中檢索每個服務的最新狀態:服務和狀態。 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中文網其他相關文章!