SQL - 需要在单个表中标识多个组中的最新条目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL - 需要在单个表中标识多个组中的最新条目相关的知识,希望对你有一定的参考价值。

我查看了Selecting latest entries for distinct entry,但我很挣扎,因为我在结果集中需要更多关于表格的数据。

我们围绕几组产品创建规则,我们需要为每个CLASS_ID拉出最新规则。最新消息,我指的是最新的entry_id。

ENTRY_ID .... TIMESTAMP .... USER_ID .... ....类标识码PRICE_POINT 1 ........... 3/2/2018 3:40 ... 1 .......... 53 ....... 50 2 ........... 3/2/2018 3:56 ... 1 .......... 12 ....... 50 3 ........... 3/2/2018 4:56 ... 1 .......... 24 ....... 22 4 ........... 3/2/2018 4:57 ... 1 .......... 564 ..... 22 5 ........... 3/3/2018 4:08 ... 1 .......... 53 ....... 99 6 ........... 3/3/2018 4:09 ... 1 .......... 53 ....... 99

目标是获得EACH类的最新时间戳或条目(它们应该相互对应)。

所需的输出是(按类排序):

TIMESTAMP .... USER_ID .... ....类标识码PRICE_POINT 3/2/2018 3:56 ... 1 .......... 12 ....... 50 3/2/2018 4:56 ... 1 .......... 24 ....... 22 3/3/2018 4:09 ... 1 .......... 53 ....... 99 3/2/2018 4:57 ... 1 .......... 564 ..... 22

我花了几个小时看这个,看起来很简单,但我一直在努力找到一种方法来解决这个问题。

不会有很多增长,最多几千行,所以我正在寻找简单的代码来理解和学习过度的性能。

谢谢!

凯尔

答案

这是一种常用方法:

select t.*
from t
where t.entry_id = (select max(t2.entry_id) from t t2 where t2.class_id = t.class_id);

有了(class_id, entry_id)的索引,这通常是最快的解决方案。

以上是关于SQL - 需要在单个表中标识多个组中的最新条目的主要内容,如果未能解决你的问题,请参考以下文章

从每组中的 3 个表中选择 sql 中具有最新日期的行

合并多个表中的最新条目

SQL Server 仅更新组中的最新记录

查询单个表中每个组中的前 5 名候选人

nhibernate,检索表中的最新行

使用Python脚本删除SQL数据库中的多个条目