我有两张表UCP
,TerritoriesInfo
UCP
有TerritoriesID
,Territories
TerritoriesInfo
有ID
,TerritoriesName
我想用Row_Number()
更新TerritoriesID
例如
UCP
TerritoriesID Territories
1 NULL
2 NULL
3 NULL
4 NULL
5 NULL
6 NULL
7 NULL
TerritoriesInfo
ID TerritoriesName
1 A
2 B
3 C
4 D
5 ES
6 T
7 R
首先我想分配UCP.TerritoriesID = ROW_NUMBERS()第二我想从TerritoriesInfo.TerritoriesName更新UCP.Territories,其中UCP.TerritoriesID = TerritoriesInfo.ID 我尝试了自动增量,但是当我使用delete语句并重试时它不起作用 然后我尝试了这个查询但不起作用
update UCP SET TerritoriesID = ROW_NUMBER()
答案 0 :(得分:2)
由于UCP.TerritoriesID
和TerritoriesInfo.ID
包含基于单一的序列,样本数据中没有间隙,因此不清楚这里的要求是什么。我最好的猜测是真正的UCP.TerritoriesID
数据要么是非连续的,要么不是从一开始。
ROW_NUMBER
在其ORDER BY
子句中需要OVER
。我猜测应根据UCP.TerritoriesID
的当前值分配行号,等待更多信息:
;WITH numCTE
AS
( SELECT TerritoriesID, ROW_NUMBER() OVER (ORDER BY TerritoriesID) AS rn
FROM UCP
)
UPDATE numCTE
SET TerritoriesID = rn
(我假设一旦你有了这个,你可以处理UCP.Territories
的更新