我正在使用T-SQL。我有两个表:fullname和SSN表。 SSN表有10000多条记录,其中包含名字,姓氏和ssn列。 fullname表有100条带有名字和姓氏的记录。
我想用fullname的名字和姓氏记录来更新SSN表。在100条记录的末尾,我只想重复这些名称(从fullname的第1行开始),直到它完成更新SSN表中的所有记录。我尝试下面这样的MERGE,但得到了'MERGE语句试图多次更新或删除同一行'错误消息。在下面的代码中,我试图首先更新[姓氏]列。你能帮帮忙吗?感谢。
MERGE INTO [SSN]
USING [fullname]
ON 1=1
WHEN MATCHED THEN
UPDATE
SET [last name] = [fullname].[last name];
答案 0 :(得分:1)
您可以使用这些行的更新语句来执行此操作。这假设ssnTable.RowNumber(或您的实际名称)没有间隙。如果你有差距,那么在那里使用RowNumber也是一个非常简单的步骤。
update s
set LastName = fn.FullName
from ssnTable s
join
(
select ROW_NUMBER() over(order by LastName) as RowNum
, LastName
from FullName
) fn on fn.RowNum = s.RowNumber % 100