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

来源:互联网 发布:程序员五阶段书单搞笑 编辑:程序博客网 时间:2024/05/16 11:41

假设对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筛选,因为主键是一定不重复的,而更新时间则可能在一毫秒插入多条数据;

阅读全文
1 0