我有一个表T1,其中包含id和name。如果名称从前端更新,则会创建一个具有更新名称的新行,从而为同一个ID创建两行。我想从表中获取最后一个或最新更新的行。 注意:该表未捕获任何日期或时间列。下面是一个例子,在这里我必须得到名为Albert Dazy的最新记录。 我正在使用Sql Server 2008
Table T1:
|---------------------|------------------|
| id | name |
|---------------------|------------------|
| abc_0011 | Albert |
|---------------------|------------------|
| abc_0011 | Dazy |
|---------------------|------------------|
| abc_0011 | Albert Dazy |
|---------------------|------------------|
我没有为记录捕捉时间,是否可以在没有日期时间逻辑的情况下完成?比如,在内部计算时间逻辑?
答案 0 :(得分:0)
此查询应该可以提供所需的结果。
;with CTE as(
select ID,name,row_number()over(partition by id order by id desc) RID
from #tmp
)
select C.ID,C.Name from CTE C JOIN (select max(RID) MRID,ID FROM CTE GROUP BY ID) T ON C.RID=T.MRID AND C.id=T.id