db2 UPDATE

在DB2数据库环境下:
  假设有表A,B两张表,有下列UPDATE语句:
    UPDATE A
    SET A1 = (SELECT B1 FROM  B WHERE A.ID = B.ID)   
对于上面的语句,表明是要对表A所有行的A1字段进行update:对满足WHERE A.ID = B.ID的行,则进行更新A1=B1;对不满足该条件的行,则对A1更新为A1=null.
 
若对表A的字段A1,想update的是:满足A.ID = B.ID的行,进行更新A1=B1,不满足该条件的行,则不进行更新,SQL语句为:
  UPDATE A
    SET A1 = (SELECT B1 FROM B WHERE A.ID = B.ID)
    WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)
其中,上面where语句的作用是限制更新条件:A.ID = B.ID,关于这一点,DB2数据库有点烦人,它不能支持下列形式的update语句:
   UPDATE A
      SET A1 = B1
      FROM A, B WHERE A.ID = B.ID
若能支持这样的语法形式,则再写原来的SQl语句就会简洁易懂多了.只可惜,强大的DB2并不支持这种语法格式.
另外,上面更新的只是一个字段,DB2可以同时更新几个字段:
    UPDATE A
      SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID);
 
   UPDATE A
     SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
     WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID);
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值