MySQL内连接,获取最后一个条目,而不是第一个条目

uqzxnwby  于 2022-12-10  发布在  Mysql
关注(0)|答案(1)|浏览(150)

我的MULTI JOIN SQL语句有问题,我需要获取表的最后一个条目,而不是第一个条目。根据下面的语句,我尝试查询3个表:

SELECT DISTINCT i.id,i.hz,i.v,i.t,i.u,i.temp, i.c1, s.server, s.hostname, h.codes,s.cpus FROM `dc_servers` AS s INNER JOIN `dc_hardware` AS h ON  s.server = h.server INNER JOIN `dc_systemusage` AS i ON s.server = i.server GROUP BY i.server

dc_serversdc_hardware在每个服务器上只有1行,而表dc_systemusage在添加新信息时,在同一服务器上有很多行。
当我运行查询时,我从dc_systemusage获得了第一个条目,但我需要从该表获得最新的条目,对我来说,这听起来像是我需要一个ORDER BY,但是如果我将其添加到查询的末尾,如下所示:

SELECT DISTINCT i.id,i.hz,i.v,i.t,i.u,i.temp, i.c1, s.server, s.hostname, h.codes,s.cpus FROM `dc_servers` AS s INNER JOIN `dc_hardware` AS h ON  s.server = h.server INNER JOIN `dc_systemusage` AS i ON s.server = i.server GROUP BY i.server ORDER BY i.id DESC

然后我只是在排序结果,这不是我想要的。
我希望有人能为我指引正确的方向,告诉我如何才能获得最新的行,而不是表dc_systemusage中的第一行
我希望我已经提供了所需的信息来指导我,否则请让我知道,我会补充任何需要的。
谢谢大家。

abithluo

abithluo1#

您可以在子查询中找到DC_SYSTEMUSAGE的最新ID,并与WHERE一起使用...在……里面

SELECT i.id,i.hz,i.v,i.t,i.u,i.temp, i.c1, s.server, s.hostname, h.codes,s.cpus
FROM `dc_servers` AS s
INNER JOIN `dc_hardware` AS h ON  s.server = h.server
INNER JOIN `dc_systemusage` AS i ON s.server = i.server
WHERE i.id IN (SELECT max(dc_systemusage.id) FROM dc_systemusage GROUP BY dc_systemusage.server)

https://stackoverflow.com/a/3800572/7174186上查看答案

相关问题