T-SQL - 即使重复数据也会更新所有行

时间:2017-02-22 20:59:23

标签: sql sql-server

我正在使用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];

1 个答案:

答案 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