请考虑此表:
id Col1 Col2
--------------------------
1 nima null
18 john null
25 sara null
我有一个选择,用于重新记录此记录:
id Col
---------------
1 LA
2 WA
3 FL
我想以您看到的相同顺序更新上表中的此记录。例如LA
的更新nima
和...
我怎么能这样做?
感谢
答案 0 :(得分:5)
您可以根据row_number()
进行更新,以及可以在SQL Server中更新common table expressions的事实,如下所示:
with cte1 as (
select Col2, row_number() over(order by id) as rn
from Table1
), cte2 as (
select col, row_number() over(order by id) as rn
from Table2
)
update c1 set
Col2 = c2.col
from cte1 as c1
left outer join cte2 as c2 on c2.rn = c1.rn
<强> sql fiddle demo 强>
请注意,如果您的表很大,性能可能不是很好。如果是这种情况,您可以考虑使用row_number列创建临时表,并使此列成为主键,只需创建适当的索引