如何将ROW_NUMBER()分配给列

时间:2017-04-27 10:53:21

标签: sql sql-server

我有两张表UCPTerritoriesInfo

UCPTerritoriesIDTerritories

TerritoriesInfoIDTerritoriesName

我想用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() 

1 个答案:

答案 0 :(得分:2)

由于UCP.TerritoriesIDTerritoriesInfo.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的更新