Tsql T-SQL如何仅更新底部/最后一行?

Tsql T-SQL如何仅更新底部/最后一行?,tsql,sql-update,record,Tsql,Sql Update,Record,我想更新表中的底部/最后一行。我已尝试实现解决方案,但没有任何语法是正确的: UPDATE TOP(1) @ResultTable SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate) ORDER BY PeriodID DESC 或 我目前的工作是: UPDATE @ResultTable SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate) WHERE PeriodID=(SELECT COUNT(

我想更新表中的底部/最后一行。我已尝试实现解决方案,但没有任何语法是正确的:

UPDATE TOP(1) @ResultTable
SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate)
ORDER BY PeriodID DESC

我目前的工作是:

UPDATE @ResultTable
SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate)
WHERE PeriodID=(SELECT COUNT(PeriodID) FROM @ResultTable)-1

但这并不总是有效的,因为在我的函数中,一些记录被删除,并且我并不总是让periodid以1递增。

您的问题中没有足够的上下文来给出可靠的答案。根据您的工作解决方案,与其查找计数,不如查找max PeriodID?只要后续的PeriodID的值更大,它就可以获得“最后一个”记录

;WITH CTE AS 
( 
SELECT TOP 1 * 
FROM @ResultTable
ORDER BY PeriodID DESC
) 
UPDATE CTE SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate)

如果每行中都有一个唯一的列(可能是PeriodID?),则可以执行以下操作:

UPDATE @ResultTable
SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate)
where <unique column> = (select top 1 <unique column> 
  from @ResultTable
  order by PeriodID desc
  )
UPDATE@resultable
设置PeriodLastDate=DATEADD(天,-1,PeriodLastDate)
其中=(选择顶部1
来自@resultable
按周期ID描述排序
)
关于:

UPDATE ResultTable SET PeriodLastDate='NewValue' WHERE ID= (SELECT MAX(ID) FROM ResultTable)
UPDATE @ResultTable
SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate)
where <unique column> = (select top 1 <unique column> 
  from @ResultTable
  order by PeriodID desc
  )
UPDATE ResultTable SET PeriodLastDate='NewValue' WHERE ID= (SELECT MAX(ID) FROM ResultTable)