我有一个 Excel 文件,其中包含一些数据 (ids),这些 id 在数据库中有多个记录。我有大约 400 个 id,我需要获取每个 id 的最新记录。我不想一件一件地做。我尝试使用 IN 子句,但没有成功。
Select *
from myTable with (nolock)
where submission_number IN ('02597', '69875')
order by timestame DESC;
以上查询不能满足我的要求。有人可以帮忙/指导吗?
谢谢
最佳答案
我会使用apply
来做到这一点:
select t.*
from (values ('02597'), ('69875')) v(submission_number) cross apply
(select top (1) t.*
from mytable t
where t.submission_number = v.submission_number
order by t.timestamp desc
) t;
一个很好的功能是您可以使用outer apply
,即使表中没有匹配项,它也会在结果集中返回一行。
另一种不使用子查询的方法是;
select top (1) with ties t.*
from myTable t
where submission_number in ('02597', '69875')
order by row_number() over (partition by submission_number order by timestame desc);
关于java - 如何编写 SQL 查询以使用 IN 子句获取第一条记录(最新)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51866519/