日期:2014-05-18  浏览次数:20442 次

这样的SQL如何来写,是不是可以用游标,在线等待
表A     tblA
          f1       fNumber
          100       900
          101       200
          102       300

表B     tblB
          f1       fNumber
          100       300
          101       20
          130       500

先从表B(tblB)中查询,如果f1的值在表A中存在,则将表A(tblA)中fNumber的值相加,如果不存在,则在表A中插入新的值,得到的结果如下:

        f1       fNumber
        100       1200
        101       220
        102       300
        130       500



------解决方案--------------------
update tblA set fNumber=A.fNumber+B.fNumber from tblA A,tblB B where A.f1=B.f1

insert into tblA select * from tblB where not exists(select 1 from tblA where f1=tblB.f1)
------解决方案--------------------
--更新tblA,将tblB中f1相同的fNumber值累加到tblA中对应记录
update A set fNumber=A.fNumber+B.fNumber from tblA A,tblB B where A.f1=B.f1

--将tblB在tblA中不存在的f1所对应记录新增到tblA
insert into tblA select * from tblB where not exists(select 1 from tblA where f1=tblB.f1)