Sql 如何将行数()分配给列
我有两个表Sql 如何将行数()分配给列,sql,sql-server,Sql,Sql Server,我有两个表UCP,TerritoriesInfo UCP拥有TerritoriesID,地区 TerritoriesInfo拥有ID,TerritoriesName 我想用行号()更新TerritoriesID) 比如说 UCP TerritoriesInfo ID TerritoriesName 1 A 2 B 3
UCP
,TerritoriesInfo
UCP
拥有TerritoriesID
,地区
TerritoriesInfo
拥有ID
,TerritoriesName
我想用行号()更新TerritoriesID
)
比如说
UCP
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()
由于
UCP.TerritoriesID
和TerritoriesInfo.ID
在样本数据中包含基于一的序列,因此不清楚这里的要求是什么。我最好的猜测是,实际的UCP.TerritoriesID
数据要么是非顺序的,要么不是从一开始的
在其OVER
子句中需要一个orderby
。我猜应该根据UCP.TerritoriesID的当前值分配行号,等待更多信息:
;WITH numCTE
AS
( SELECT TerritoriesID, ROW_NUMBER() OVER (ORDER BY TerritoriesID) AS rn
FROM UCP
)
UPDATE numCTE
SET TerritoriesID = rn
(我假设一旦你有了这个,你就可以处理更新
UCP.territies
),因为UCP.TerritoriesID
和TerritoriesInfo.ID
包含一个基于一个的序列,样本数据中没有空白,不清楚这里有什么要求。我最好的猜测是,实际的UCP.TerritoriesID
数据要么是非顺序的,要么不是从一开始的
在其OVER
子句中需要一个orderby
。我猜应该根据UCP.TerritoriesID的当前值分配行号,等待更多信息:
;WITH numCTE
AS
( SELECT TerritoriesID, ROW_NUMBER() OVER (ORDER BY TerritoriesID) AS rn
FROM UCP
)
UPDATE numCTE
SET TerritoriesID = rn
(我假设一旦你有了这个,你就可以处理更新
UCP.territions
)使用ROWNUM而不是ROW\u NUMBER()-更新UCP SET TerritoriesID=ROW\u NUM;'“ROW_NUM”不是可识别的内置函数名。@Jimmacauley:这个问题是关于(Microsoft)SQL Server的,而不是Oracle…..无法在SQL中完成?我仍然无法理解这个问题。请使用ROWNUM而不是ROW_NUM()-更新UCP SET TerritoriesID=ROW_NUM;”“ROW_NUM”不是可识别的内置函数名。@Jimmacauley:这个问题是关于(Microsoft)SQL Server的,而不是Oracle…..无法用SQL完成?我仍然无法理解这个问题。窗口函数只能出现在SELECT或ORDER BY子句中。我想用ROW_number()填充TerritoriesID表单ucp若要处理其他问题,窗口函数只能出现在SELECT或ORDER BY子句中。我想用row_number()填充TerritoriesID表单ucp以处理其他问题