频道栏目
首页 > 资讯 > 其他综合 > 正文

假设对testid有更新则插入一条新记录,那么怎么查询出testid最后的状态(分组查询)

17-10-02        来源:[db:作者]  
收藏   我要投稿

假设对testid有更新则插入一条新记录,那么怎么查询出testid最后的状态。

下面的表里的数据,只插入了一部分做模拟
这里写图片描述

可以看到testId为1的数据有3条,而我们则需要拿出其中最后更新的那条,那么该怎么拿呢?

首先将表通过testid分组,查询出最后的时间

SELECT *,MAX(time) lasttime FROM a GROUP BY testid ;

这里写图片描述

可以看到查询出来的数据多了一个字段叫lasttime,接下来就用该字段对数据进行筛选。

将查询出来的字段作为一张表,与原表关联查询

SELECT * FROM a ,
(SELECT *,MAX(time) lasttime FROM a GROUP BY testid) c 
WHERE a.testid=c.testid and a.time=c.lasttime;

这里写图片描述
这样便能查询出每个testid的最后状态了

ps:最好用主键ID筛选,因为主键是一定不重复的,而更新时间则可能在一毫秒插入多条数据;

相关TAG标签
上一篇:【Linux系统指令】linux系统下yum命令介绍
下一篇:【Linux系统指令】linux系统下的TOP命令介绍
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站