Для развлечения (да, у меня извращенное чувство юмора в пятницу вечером!), Вот запрос, который это делает!- Я объявил таблицы и верхнюю часть и использовал только 6 строк в каждой таблице, но вы получите идею:
--Setup test data
declare @table1 table (ID int, Name varchar(10))
declare @table2 table (ID int, Name varchar(10))
insert @table1
select ID = 1, Name = 'Item1'
union select ID = 2, Name = 'Item2'
union select ID = 3, Name = 'Item3'
union select ID = 4, Name = 'Item4'
union select ID = 5, Name = 'Item5'
union select ID = 6, Name = 'Item6'
insert @table2
select ID = 11, Name = 'Item11'
union select ID = 12, Name = 'Item12'
union select ID = 13, Name = 'Item13'
union select ID = 14, Name = 'Item14'
union select ID = 15, Name = 'Item15'
union select ID = 16, Name = 'Item16'
--Do the update
update t1
set
ID = t2.ID
from
@table1 t1 --Assign a row number to each row of table 1
cross apply (select rownum = COUNT(1) from @table1 sub where sub.ID <= t1.ID) x1,
@table2 t2 --Assign a row number to each row of table 2
cross apply (select rownum = COUNT(1) from @table2 sub where sub.ID <= t2.ID) x2
where x1.rownum = x2.rownum --Match the row numbers
Обновление:
Команда альтернативного обновленияна основании предложения @sllev:
update t1
set
ID = t2.ID
from
(select id, rownum = ROW_NUMBER() OVER(order by ID) from @table1) t1
join (select id, rownum = ROW_NUMBER() over (order by id) from @table2) t2
on t1.rownum = t2.rownum