数据库 对表进行查询 sql

深谷不见幽兰 发布于 2014/11/10 14:13
阅读 75
收藏 0
表a(ip,monitorTime,cpu,swap)这张表里面,是定时监控服务器的存储表,此张表里面将会有大量的数据,ip数量不确定,那么此时我想获取每个ip的最新一条数据,假如有五个ip,那么要获取五条数据,每条数据对应一个ip
加载中
0
JeffreyLin
JeffreyLin

select a.* from a,
(
select ip, max(monitorTime) monitorTime 
from a group by ip
) b
where a.ip=b.ip and a.monitorTime=b.monitorTime


深谷不见幽兰
深谷不见幽兰
谢谢
0
静心天涯
静心天涯
大概猜想一下,in语句,group by语句,having 语句结合
深谷不见幽兰
深谷不见幽兰
回复 @静心天涯 : 谢谢
静心天涯
静心天涯
不知道是否可以,可以试一下
0
yunnet
yunnet

select ip, max(monitorTime) as monitorTime, cpu, swap from a group by ip, cpu, swap

没实测,大概是这样的

深谷不见幽兰
深谷不见幽兰
谢谢
0
大连馋师
大连馋师
建议分开两个表处理,一张表保存历史明细,如你所言,是一个监控日志;另外一张表保存一份最新日志,一个IP一条数据。每次过来一条日志,保存历史明细,同时更新最新日志表!这个最新日志表很多时候是冗余在一个物理实体表的几个字段上!比如常用的登录帐号、冗余一个字段保存积分一样。
深谷不见幽兰
深谷不见幽兰
谢谢回答
0
紫_絮
紫_絮
select * from (
select a.* , rank() over(partition by a.ip order by a. monitorTime desc) rank from A a
) tmp where tmp.rank = 1;
深谷不见幽兰
深谷不见幽兰
谢谢回答
返回顶部
顶部