簡體   English   中英

如何更新ID和自動遞增列所涉及的特定行

[英]How to update a specific row where ID, and an auto increment column are involve

我有一個SQL Server表,其中第1列是entryID ,第2列是ID 我需要更新特定的行。

例如,我有3行:

  • 第1行包含(entryID = 31,ID = 28),
  • 第2行包含(entryID = 32,ID = 29),
  • 第3行包含(entryID = 33,ID = 28)

我需要更新行1.如何更新特定行?

我使用了下面的代碼,但無法更新第1行,而是更新了第3行

UPDATE Attendance 
SET TimeOUT = @TimeOUT,
    Time = @Time
WHERE ID = @ID 
  AND entryID = (SELECT MAX(entryID) FROM Attendance)

我需要更新第1行,但我總是更新最高的entryID號。

希望您可能正在尋找可以通過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

右旋糖在這里

您可以嘗試以下查詢嗎?

這用於更新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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM