簡體   English   中英

MySQL嵌套查詢選擇語句

[英]MySQL Nested Query Select Statement

我有一張桌子,可以幫助我跟蹤從機和主機之間的延遲時間。 我的問題是我該如何選擇以下語句:
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 ,  

任何幫助,將不勝感激。

那這個呢?

select delay 
    from table_name, 
         (select id, max(sent), ip from table_name group by ip) innertable 
   where innertable.id = table_name.id;

不能100%地確定我了解您想要的結果集,所以我只是選擇了延遲。

經過一番谷歌搜索和測試之后,這是到目前為止我發現的最佳答案:

    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
    )

現在修改了我的答案,將結果范圍限制為最近一分鍾更新的服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM