我有一个SQL Server表,其中第1列是entryID
,第2列是ID
;我需要更新特定行。
例如,我有3行:
我需要更新第1行。如何更新特定行?
我使用下面的代码,但是我无法更新第1行,而是更新第3行
UPDATE Attendance
SET TimeOUT = @TimeOUT,
Time = @Time
WHERE ID = @ID
AND entryID = (SELECT MAX(entryID) FROM Attendance)
我需要更新第1行,但我总是更新最高的entryID
号。
答案 0 :(得分:0)
我希望您可能正在寻找可以通过ROW_NUMBER
假设您的“行号”基于ROW1中的值顺序,则以下查询将适用于任何提供的行号。
;WITH CTE AS
(
SELECT entryID,
id,
TimeOUT,
Time,
ROW_NUMBER() OVER (ORDER BY entryID) AS RNK
FROM Attendance
)
UPDATE CTE
SET TimeOUT = @TimeOUT, Time = @Time
WHERE RNK = 2 -- your rownumber
上个月here
答案 1 :(得分:0)
您可以尝试以下查询吗?
这用于更新entryID的MAX
值。
UPDATE Attendance set
TimeOUT = @TimeOUT, Time = @Time
WHERE ID = @ID and entryID = (SELECT TOP 1 MAX(entryID) FROM Attendance)
这用于更新entryID的MIN
值。
UPDATE Attendance set
TimeOUT = @TimeOUT, Time = @Time
WHERE ID = @ID and entryID = (SELECT TOP 1 MIN(entryID) FROM Attendance)