如何检索 MS SQL 中的最新记录?
How do I retrieve latest record in MS SQL?
假设我有一个名为 Students
的 table。
++++++++++++++++++++++++++++++++++++++++++++++++++++
id name course date_admitted
1 Pankesh EEE 2020-10-21 07:52:30.977
2 Pankesh IT 2020-11-03 11:53:20.976
3 Pankesh CE 2020-09-11 08:30:29.975
++++++++++++++++++++++++++++++++++++++++++++++++++++
我要检索的是最新记录
2 Pankesh IT 2020-11-03 11:53:20.976
此实例的 SQL
查询语句是什么?
如果你只想要一行,你可以 order by
和 fetch
:
select s.*
from students s
order by date_admitted desc
offset 0 rows fetch first 1 row only
或使用top()
:
select top (1) s.*
from students s
order by date_admitted desc
另一方面,如果您想要每个学生 的最新行 ,那么它就是每个小组的前 1 名问题。您可以使用 window 函数:
select s.*
from (
select s.*,
row_number() over(partition by name order by date_admitted desc) rn
from students s
) t
where rn = 1
假设我有一个名为 Students
的 table。
++++++++++++++++++++++++++++++++++++++++++++++++++++
id name course date_admitted
1 Pankesh EEE 2020-10-21 07:52:30.977
2 Pankesh IT 2020-11-03 11:53:20.976
3 Pankesh CE 2020-09-11 08:30:29.975
++++++++++++++++++++++++++++++++++++++++++++++++++++
我要检索的是最新记录
2 Pankesh IT 2020-11-03 11:53:20.976
此实例的 SQL
查询语句是什么?
如果你只想要一行,你可以 order by
和 fetch
:
select s.*
from students s
order by date_admitted desc
offset 0 rows fetch first 1 row only
或使用top()
:
select top (1) s.*
from students s
order by date_admitted desc
另一方面,如果您想要每个学生 的最新行 ,那么它就是每个小组的前 1 名问题。您可以使用 window 函数:
select s.*
from (
select s.*,
row_number() over(partition by name order by date_admitted desc) rn
from students s
) t
where rn = 1