oracle update 多个字段

基本例子

多个字段用逗号分隔即可,如sql:

update t_goods set
inv_kind ='3100191130', inv_num ='30656462' 
where 
inv_kind='1111122222' and inv_num ='22222222';

关联表更新

关联更新需要注意的关联条件要用2遍。如下:

update IV_DEDUCT_RECORD r
set IVDR_TASK_STATE = (
  select '3' from t_code_number t
  where t.inv_kind = r.IVDR_INVOICE_CODE
  and t.inv_num = r.IVDR_INVOICE_NUMBER
)
where
1=1
and exists(
  select 1 from t_code_number t
  where t.inv_kind = r.IVDR_INVOICE_CODE
  and t.inv_num = r.IVDR_INVOICE_NUMBER
)

这里有一点啊,如果我想用r表的数据可以么,当然是可以的。
把 select ‘3’ from t_code_number t
换成
select r.inv_num from t_code_number t即可。

关联表更新多字段(旧)

update IV_DEDUCT_RECORD r
set IVDR_TASK_STATE = (
  select '3' from t_code_number t
  where t.inv_kind = r.IVDR_INVOICE_CODE
  and t.inv_num = r.IVDR_INVOICE_NUMBER
),IVDR_RETURN_CODE = (
  select '1' from t_code_number t
  where t.inv_kind = r.IVDR_INVOICE_CODE
  and t.inv_num = r.IVDR_INVOICE_NUMBER
)
where
1=1
and exists(
  select 1 from t_code_number t
  where t.inv_kind = r.IVDR_INVOICE_CODE
  and t.inv_num = r.IVDR_INVOICE_NUMBER
)

关联表更新多字段(新)

上面那种写法太繁琐了,其实可以写在一行里面的,用括号括起来即可,当然select 的列也要对应。

update IV_DEDUCT_RECORD r
set (IVDR_TASK_STATE,IVDR_RETURN_CODE )= (
  select '3','2' from t_code_number t
  where t.inv_kind = r.IVDR_INVOICE_CODE
  and t.inv_num = r.IVDR_INVOICE_NUMBER
)
where
1=1
and exists(
  select 1 from t_code_number t
  where t.inv_kind = r.IVDR_INVOICE_CODE
  and t.inv_num = r.IVDR_INVOICE_NUMBER
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值