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

MS-SQL两表比较再更新其中一个表的问题,请看描述:
两表对比更新字段的问题,直入主题:

1、表A:
A01(编号) | A02(数量) | A03(已完成数量)  | A04(未完成数量=A02-A03)
------------------------------
0001      |   100     |       0          |100
0002      |   200     |       0          |200
0003      |   300     |       0          |300


2、表B:
B01(编号) | B02(数量) 
-----------------------
0001      | 80
0002      | 150


3、现在通过表B的内容来更新表A的A03和A04字段,即想要得到:

A01(编号) | A02(数量) | A03(已完成数量)  | A04(未完成数量=A02-A03)
------------------------------
0001      |   100     |       80         |20
0002      |   200     |       150        |50
0003      |   300     |       0          |300
------最佳解决方案--------------------
update A set A03=b.b02,A04=A01-b.b02
from A inner join B on a.a01=b.b01

------其他解决方案--------------------
--seelct
SELECT  A01 , A02 , B02 , A01-B.B02
FROM    A
INNER JOIN B
ON      a.A01 = b.B01
--update

UPDATE A SET  A03=B02 , A04 = A01-B.B02
FROM    A
INNER JOIN B
ON      a.A01 = b.B01

------其他解决方案--------------------
十分感谢,原来这么简单,难道是我想复杂了!。。另外:第一行最后应该是A04=A02-b.b02

引用:
SQL code
update A set A03=b.b02,A04=A01-b.b02
from A inner join B on a.a01=b.b01

------其他解决方案--------------------
引用:
十分感谢,原来这么简单,难道是我想复杂了!。。另外:第一行最后应该是A04=A02-b.b02


引用:

SQL code
update A set A03=b.b02,A04=A01-b.b02
from A inner join B on a.a01=b.b01

------其他解决方案--------------------
Good!
引用:
SQL code
--seelct
SELECT  A01 , A02 , B02 , A01-B.B02
FROM    A
INNER JOIN B
ON      a.A01 = b.B01
--update

UPDATE A SET  A03=B02 , A04 = A01-B.B02
FROM    A