我做了一些研究,但发现的例子似乎不是我需要的。我的表结构是这样的:
Hostname Filename Timestamp
Host1 ***.exe 2014-09-09 12:01:45.000
Host1 ***.pdf 2014-08-09 12:01:45.000
Host1 ***.ide 2014-07-09 12:09:44.000
Host1 ***.ide 2014-12-31 12:00:00.000
Host2 ***.exe 2014-09-09 12:01:45.000
Host2 ***.pdf 2014-08-09 12:01:45.000
Host2 ***.ide 2014-07-08 12:09:44.000
Host2 ***.ide 2014-12-29 12:00:00.000
拥有数百台主机,每台主机拥有数十万个文件。我想要得到的是来自每个主机的ONE .IDE文件 - 以最新的时间戳为准。所以在这种情况下,我想回复:
Host2 ***.ide 2014-12-29 12:00:00.000
Host1 ***.ide 2014-12-31 12:00:00.000
我尝试了以下但是它似乎不是我想要的,我不知道为什么,我知道它是错的:
select hostname, filename, max(timestamp) as timestamp from TABLE where
filename like '%.ide%'
group by hostname,filename
任何帮助将不胜感激!
答案 0 :(得分:0)
我相信这会奏效:
select t.*
from table t
join (
-- gets the maximum timestamp per hostname for "ide"
SELECT max(Timestamp) as maxTime, hostname
from table
where filename like '%.ide%'
group by hostname
) s on t.hostname = s.hostname
and t.timestamp = s.maxTime
where t.filename like '%.ide%'
基本上它从主表中选择*,其中记录可以在子查询上成功连接,子查询标识" ide"
的每个主机名的最大时间戳