每个ID获取最新记录的SQL查询

4

我可以帮助您翻译以下与IT技术相关的内容。需要翻译的内容是:

我有一张表格,需要获取每个“id”的最新“日期”。我已经为一个“id”编写了查询语句。但我不知道如何应用于多个“id”(即每个“id”)。

我的单个“id”查询语句如下(假设表名为tt):

select * from (
   SELECT DISTINCT id ,date FROM tt  
   WHERE Trim(id) ='1000082'
   ORDER BY date desc
) where rownum<=1;

请在您的问题中标记您正在使用的数据库:mysql、oracle、sqlserver...? - GMB
1个回答

11

如果你只有两列数据,聚合就足够了:

select id, max(date) max_date
from mytable
group by id

如果您有更多的列,并且希望获取每个ID具有最新日期的完整行,则可以使用相关子查询进行过滤:

select t.*
from mytable t
where t.date = (select max(t1.date) from mytable t1 where t1.id = t.id)

如果你的数据库支持,你也可以使用窗口函数:

select *
from (select t.*, row_number() over(partition by id order by date desc) rn from mytable t) t
where rn = 1

1
你的第一个解决方案 max(date) 对我非常有效,我有许多相同用户的记录,我只需要每个用户最近的记录。 - Robby Lebotha
第二个解决方案对我来说很有效,因为我的表格中有很多列。 - Muneeb Shahid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接