我有一个包含以下列的数据库表:
id code value datetime timestamp
在此表中,唯一的唯一值位于id中,即主键。
我想基于datetime值检索该表中的最后一组不同的记录。例如,下面是我的桌子
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的记录,即具有不同代码(基于datetime值)的最后一组记录。我强调的只是我要实现的目标的一个示例,因为此表最终将包含数百万条记录和数百个单独的代码值。
我可以使用什么SQL语句来实现这一目标?我似乎无法通过单个SQL语句完成它。我的数据库是MySQL 5。
这应该为您工作。
SELECT *
FROM [tableName]
WHERE id IN (SELECT MAX(id) FROM [tableName] GROUP BY code)
如果id为AUTO_INCREMENT,则无需担心datetime的计算成本会高得多,因为最新的datetime也会具有最高的id。
更新:
从性能的角度来看,确保在处理大量记录时对id
和code
列建立索引。如果id
是主键,则它是内置的,但是您可能需要添加覆盖code
和的非聚集索引id
。
我正在尝试对存储在elasticsearch中的记录实现搜索查询。记录结构看起来像这样。 一个框可以包含多个项目。例如,Box3可以有Item1、Item2和Item3。因此,在elasticsearch中,我将有3个不同的文档。同时,同一个框和同一个项目也可以存在,但地址不同。这些文档的transactionID可能相同,也可能不相同。 我的要求是获取最后n个最近的和不同的Transaction
问题内容: 我正在使用mysql并遇到一些问题。我想检索插入的最后一行。 <<以下是详细>> 以下是我创建表格的方式。 我在其中插入了四个值,如下所示 当我执行时,我得到如下输出 当我尝试下面的代码时, 我得到如下输出。 但是,当我使用代码时,出现错误 使用时,表中没有任何数据。 链接以播放数据 注意: 这里我使用4只是为了获得所需的输出。稍后我可以从查询中获取 如果我只想查看最后一条记录,请建议
问题内容: 这个问题已经在这里有了答案 : 8年前关闭。 可能重复: SQL Server:只有GROUP BY中的最后一个条目 我有一个这样的表: 我使用以下查询: 以上查询的结果: 在结果组上方按名称排列行,但显示每个组的第一行。我想从每个组中选择最后一行(按ID)。 例如: 如何编写以上结果的查询。 谢谢 问题答案: 甚至可能不再需要该组。
问题内容: 怎么做? 该问题的原标题是“ 在带有子查询的复杂查询中使用等级(@Rank:= @Rank + 1)-可以吗? ”,因为我一直在寻找使用等级的解决方案,但是现在我看到Bill所发布的解决方案是好多了。 原始问题: 我正在尝试组成一个查询,该查询将从给定定义顺序的每个组中获取最后一条记录: 表达式通常用于等级,但对我来说,在2个子查询中使用时,它看起来可疑,但仅初始化一次。这样行吗? 其
问题内容: 假设我们有以下定义的Django ORM模型: 我想获取每种语言的最新聚会。 看来您可以使用Django Aggregates简化 查找过程: 在我看来,这应该获取每种语言的“最新”聚会。但是事实并非如此: 我希望能得到两个最新的Python和Node见面会! 如何构造仅获取每种语言的最新聚会的查询? PS。 我正在使用MySQL作为后端。 问题答案: 将您的条款放在之前。 从聚合文档
问题内容: 到目前为止,这是我的JavaScript代码: 当前,它需要URL中数组的倒数第二个项目。但是,我想检查数组中的最后一项是否正确,如果是,请改为抓取倒数第三项。 问题答案: 如果您的服务器为“ index.html”和“ inDEX.htML”提供相同的文件,则您也可以使用:。 但是,如果可能的话,您可能要考虑在服务器端进行此操作:它将更加干净并且可以在没有JS的情况下使用。