直接删除A表根据B表重建
--------------
IF OBJECT_ID('TEMPDB..#TEMP_表A') IS NOT NULL
DROP TABLE #TEMP_表A
/*创建临时表 为了生成一个顺序*/
CREATE TABLE #TEMP_表A(
[I][NVARCHAR](100) NULL,
[id] [NVARCHAR](100) NULL,
[name] [NVARCHAR](100) NULL
)
/*A表插入临时表*/
insert into #TEMP_表A select row_number() over(partition by id) [i],id,姓名 FROM A表;
with B as (
select row_number() over(partition by id) [i],id,姓名 FROM b表
)
/*通过顺序号I和 字段ID 更新临时表*/
update a set a.name=b.姓名 from #TEMP_表A a inner join b on a.i=b.i and a.id=b.id
/*删除表A数据*/
DELETE FROM A表
/*临时表数据写入A表*/
INSERT INTO A表 SELECT ID,姓名 FROM #TEMP_表A
/*删除临时表*/
DROP TABLE #TEMP_表A
/*
PS:如果A表中同一ID有5个,B表只有3个则A表有2个不会更新
*/