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