我有一张桌子可以帮助我跟踪我的奴隶和主人之间的延迟时间。我的问题是如何制作一个选择陈述:
1.给我最新的延迟值,而不重复(或跳过)IP地址
2.如果我添加其他服务器,或者服务器无响应,则无需更新
此查询的目的是向我展示可以使用哪些服务器,并粗略估计它们的工作难度。不可操作的服务器不应出现在结果中。我正在运行一个脚本来评估每分钟作为CLI的延迟时间,所以如果我可以限制返回到最后一分半的可能记录,这应该足以告诉我最后一次服务器是哪些服务器查询。
表看起来像这样(重命名列以保护无辜者):
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
ip VARCHAR( 20 ) NOT NULL ,
sent TIMESTAMP NOT NULL ,
delay DECIMAL ( 7,4 ) NOT NULL ,
status VARCHAR( 100 ) NOT NULL ,
execution_time` DECIMAL ( 7,4 )NOT NULL ,
deleted` TINYINT NOT NULL ,
任何帮助都将不胜感激。
答案 0 :(得分:0)
这个怎么样?
select delay
from table_name,
(select id, max(sent), ip from table_name group by ip) innertable
where innertable.id = table_name.id;
不是100%肯定我理解你想要的结果集,所以我选择了延迟。
答案 1 :(得分:0)
经过一些谷歌搜索和一些测试,这是迄今为止我发现的最佳答案:
SELECT ip, id, delay, stat_sent
FROM status
WHERE stat_sent > DATE_SUB( NOW( ) , INTERVAL 1 MINUTE )
AND stat_sent
IN (
SELECT max( stat_sent )
FROM status GROUP BY stat_ip
)
现在修改了我的答案,它将结果的范围限制在最后一刻更新的服务器。