用一个表字段值更新另一个表字段值

类型一:
Oracle:
另一个表的字段更新该表字段
例一、
update chgtab set ( chgtab.bm, chgtab.ks ) = ( select cl.pk_doc, cl.pk_cumdoc from alterprovider cl where chgtab.fb_oid = cl.oid ) where ( chgtab.fb_oid ) in ( select cl.oid from alterprovider cl )

UPDATE chgtab SET coutcurrtype = (SELECT tmp.coutcurrtype  FROM (SELECT DISTINCT h.chgtabtid, h.coutcurrtype  FROM chgtab h INNER JOIN  chgtab_b b ON h.chgtabtid = b.chgtabtid where b.coutcurrtype is not null ) tmp  WHERE chgtab.chgtabtid = tmp.chgtabtid)

例二、
UPDATE chgtab_bb
SET (chgtab_bb.nprice , chgtab_bb.nnotaxprice  ,
      chgtab_bb.nnotaxmny  , chgtab_bb.nmny  ,
      chgtab_bb.ntaxmny  ,
      chgtab_bb.cnexttypecode ,
      chgtab_bb.vnextcode , chgtab_bb.cnextid,
      chgtab_bb.cnextbid2  , chgtab_bb.cnextbid ,
      chgtab_bb.cnexttypecode2,
      chgtab_bb.vnextcode2, chgtab_bb.cnextid2,
      chgtab_bb.vnextrowno,
      chgtab_bb.vnextrowno2, chgtab_bb.ndiscount,
      chgtab_bb.crowno  )=(select
   b.nprice,b.nnotaxprice,b.nnotaxmoney,b.nmoney,b.ntaxmny,b.cnexttypecode,b.vnextcode,b.cnextid,
   b.cnextbid2,b.cnextbid,b.cnexttypecode2,b.vnextcode2,b.cnextid2,b.vnextrowno,b.vnextrowno2,100,'1'
FROM chgtab_b b
WHERE b.chgtabt_bid = chgtab_bb.chgtabt_bid)

例三、
update chgtabtmp_bb set (cupcalbodyid,cupwarehouseid)=(select cupcalbodyid,cupwarehouseid from
chgtab_bb bb2 where chgtabtmp_bb.chgtabt_bid=bb2.chgtabt_bid and chgtabtmp_bb.cupcorpid=bb2.cupcorpid)
where chgtabt_bid||cupcorpid in (select chgtabt_bid||cupcorpid from chgtab_bb where dr=0)

特别注意:子查询中的条件必须和外部的条件相同(或者外部条件必须比子查询条件限制严格),否则会更新错误

 

SQLServer:

UPDATE chgtab_bb
SET chgtab_bb.nprice = b.nprice, chgtab_bb.nnotaxprice = b.nnotaxprice,
      chgtab_bb.nnotaxmny = b.nnotaxmoney, chgtab_bb.nmny = b.nmoney,
      chgtab_bb.ntaxmny = b.ntaxmny,
      chgtab_bb.cnexttypecode = b.cnexttypecode,
      chgtab_bb.vnextcode = b.vnextcode, chgtab_bb.cnextid = b.cnextid,
      chgtab_bb.cnextbid2 = b.cnextbid2, chgtab_bb.cnextbid = b.cnextbid,
      chgtab_bb.cnexttypecode2 = b.cnexttypecode2,
      chgtab_bb.vnextcode2 = b.vnextcode2, chgtab_bb.cnextid2 = b.cnextid2,
      chgtab_bb.vnextrowno = b.vnextrowno,
      chgtab_bb.vnextrowno2 = b.vnextrowno2, chgtab_bb.ndiscount = 100,
      chgtab_bb.crowno = '1'
FROM chgtab_b b
WHERE b.chgtabt_bid = chgtab_bb.chgtabt_bid


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值