mysql – 获取最后一组不同的记录

我有一个包含以下列的数据库表:

id   code   value   datetime   timestamp

在该表中,唯一的唯一值存在于id即主键中.

我想根据日期时间值检索此表中最后一组不同的记录.例如,让我们说下面是我的表

id   code   value   datetime               timestamp
1    1023   23.56   2011-04-05 14:54:52    1234223421
2    1024   23.56   2011-04-05 14:55:52    1234223423
3    1025   23.56   2011-04-05 14:56:52    1234223424
4    1023   23.56   2011-04-05 14:57:52    1234223425
5    1025   23.56   2011-04-05 14:58:52    1234223426
6    1025   23.56   2011-04-05 14:59:52    1234223427
7    1024   23.56   2011-04-05 15:00:12    1234223428
8    1026   23.56   2011-04-05 15:01:14    1234223429
9    1025   23.56   2011-04-05 15:02:22    1234223430

我想检索ID为4,7,8和9的记录,即具有不同代码的最后一组记录(基于日期时间值).我所强调的只是我想要实现的一个例子,因为这个表最终将包含数百万条记录和数百个单独的代码值.

我可以用什么SQL语句来实现这个目的?我似乎无法使用单个SQL语句完成它.我的数据库是MySQL 5.

解决方法:

这应该适合你.

 SELECT * 
 FROM [tableName] 
 WHERE id IN (SELECT MAX(id) FROM [tableName] GROUP BY code)

如果id是AUTO_INCREMENT,则无需担心计算成本高得多的日期时间,因为最近的日期时间也将具有最高的id.

更新:从性能角度来看,确保在处理大量记录时索引id和code列.如果id是主键,则内置它,但您可能需要添加包含代码和ID的非聚集索引.

上一篇:Python:关于GQuery结果集的DISTINCT(GQL,GAE)


下一篇:ETH怎么挖矿 2021年最详细以太坊(ETH)挖矿操作步骤教程