[英]How can I update a column with row_number in SQL Server?
如何在SQL Server 2008 R2中使用row_number
覆蓋列?
BEGIN TRANSACTION
DECLARE @count int
DECLARE @maxcount int
SET @count = 1
SET @maxcount = (SELECT count(*)
FROM Applicant_Detail ad
WHERE ad.identification_code = 1)
PRINT @maxcount
WHILE (@count<@maxcount)
BEGIN
UPDATE ad
SET ad.NRIC_nbr = s.myRowNumber
FROM Applicant_Detail ad
INNER JOIN (
SELECT ROW_NUMBER() OVER (ORDER BY NRIC_nbr ASC) AS myRowNumber
FROM Applicant_Detail ad
)S
ON s.myRowNumber = @count
SET @count = @count+1
END
該查詢需要很多時間。 我在applicant_detail
表中沒有任何具有順序數據的列? 我使用計數邏輯,但是需要很多時間嗎?
我想要的是?
使用順序數據(例如1,2,3,4,5,6,7,8,9 ......)更新表的列嗎?
嘗試這個:
declare @count int = (select count(1) from Applicant_Detail)
;with cte as
(select *, row_number() over (order by @count) rn
from Applicant_Detail)
update cte
set NRIC_nbr = rn
select * from Applicant_Detail
解決這個問題
BEGIN TRANSACTION
;WITH numbering AS
( SELECT AD.NRIC_nbr,
AD.application_number,
ROW_NUMBER() OVER(ORDER BY AD.application_number) AS ROWNUMBER
FROM Applicant_Detail ad WHERE AD.identification_code=1
)
UPDATE numbering
SET NRIC_nbr=ROWNUMBER
當您想使用row_numebr更新列時。 這是完美的解決方案
使用TEMP AS(將SELECT ID作為rid,將ROW_NUMBER()覆蓋(按ORDER BY [ID] ASC)作為RN FROM ORG)更新ORG設置columnname1 ='200'+(選擇RN FROM TEMP,其中TEMP.rid = ORG.id)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.