日期:2014-05-17  浏览次数:20513 次

如何将A表中字段CS2中结果更新到B表中XY2字段中?
A表
CS1         CS2
1            'A'
2            'B'
3            'C'
B表
XY1         XY2
1            ''
2            ''
3            ''
4            ''
请问各位高手有多少种方法可以做到
------最佳解决方案--------------------
但是单纯从你这个例子来说,绝对比循环性能好。对于sql,不要包有面向过程的思想去做,要用面向集合的思路去做
------其他解决方案--------------------
update b.xy2=a.cs2
from tb1 as a inner join tb2 as b 
on a.cs1=b.xy1

------其他解决方案--------------------
感谢楼上的starseeker7
如果这个用循环来做是不是有点小题大做啊?
------其他解决方案--------------------
首先,你要说清楚两表的关联字段。我猜测是cs1和xy1,但是不排除还有别的字段关联。

update b
set b.xy2=a.cs2
from b inner join a on a.cs1=b.xy1


至于方法,要那么多干嘛?能实现就好。
------其他解决方案--------------------
你先说出用循环的理由?
------其他解决方案--------------------
感谢DBA_Huangzj
循环应该可以处理更复杂的语句,如同时更新处理更多的表
------其他解决方案--------------------
额...同时更新更多的表用不着循环啊。具体看你的需求。
------其他解决方案--------------------
如果就这两个表来看,如果A表中的字段如下
1    100.00
1    200.00
2    100.00
2    100.00
2    100.00
需要将A表中的相同字段累计求和,然后再更新B表,如何处理呢?谢谢DBA_Huangzj

------其他解决方案--------------------
2005以后的做法:
with cte(CS1, CS2)
as 
(select cs1,sum(cs2) cs2 from A group by cs1)
update b
 set b.xy2=a.cs2
 from b inner join cte a on a.cs1=b.xy1


2000的做法,把with那部分换成临时表
------其他解决方案--------------------
还是要创建临时表
------其他解决方案--------------------
好的,谢谢您的指导!多谢!结贴