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

问题描述 投票:0回答:1

我查看了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

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

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

谢谢!

凯尔

sql group-by subquery
1个回答
1
投票

这是一种常用方法:

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)的索引,这通常是最快的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.