首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

这样的SQL怎么来写,是不是可以用游标,待

2012-01-19 
这样的SQL如何来写,是不是可以用游标,在线等待表AtblAf1fNumber100900101200102300表BtblBf1fNumber100300

这样的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)

热点排行