您的位置:首页 > 其它

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

2017-09-30 10:19 288 查看
假设对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筛选,因为主键是一定不重复的,而更新时间则可能在一毫秒插入多条数据;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐