MySQL嵌套查询选择语句

时间:2010-08-23 20:15:26

标签: mysql

我有一张桌子可以帮助我跟踪我的奴隶和主人之间的延迟时间。我的问题是如何制作一个选择陈述: 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 ,  

任何帮助都将不胜感激。

2 个答案:

答案 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
    )

现在修改了我的答案,它将结果的范围限制在最后一刻更新的服务器。