从两个具有内连接的表中选择最新状态
当您有两个包含相关数据的表时,有必要检索特定信息来自两个表。在此场景中,您有两个表:服务和状态。服务表存储名称和 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中文网其他相关文章!