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

got*_*tqn 8 t-sql record sql-update

我想更新表格的底部/最后一行.我试图实现这个解决方案,但似乎没有任何正确的语法:

UPDATE TOP(1) @ResultTable
SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate)
ORDER BY PeriodID DESC
Run Code Online (Sandbox Code Playgroud)

要么

UPDATE TOP(1) @ResultTable
SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate)
FROM @ResultTable
ORDER BY PeriodID DESC
Run Code Online (Sandbox Code Playgroud)

我到现在所做的工作是:

UPDATE @ResultTable
SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate)
WHERE PeriodID=(SELECT COUNT(PeriodID) FROM @ResultTable)-1
Run Code Online (Sandbox Code Playgroud)

但这并不总是有效,因为在我的函数中删除了一些记录,并且我并不总是将PeriodID增加1.

Mar*_*ith 19

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


Fac*_*tic 6

你的问题没有足够的背景来给出一个防弹的答案.根据您的工作解决方案,如何而不是查找计数查找最大PeriodID?只要后续的PeriodID值更大,它就可以获得"最后"记录.

UPDATE @ResultTable
SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate)
WHERE PeriodID=(SELECT MAX(PeriodID) FROM @ResultTable)
Run Code Online (Sandbox Code Playgroud)