[英]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.