oracle常用批量更新方法

本文介绍在开发过程中,如何批量更新数据库表中的字段,包括使用变相update、内联视图法、merge法等技巧,适用于需要根据关联条件从一个表更新另一个表的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发中难免会遇到批量更新表中字段的情况,比如tb_a, tb_b 都有id,name,sex 字段,根据id关联条件,用tb_b中的name字段更新tb_a中的name。

我们平时写的都是单条更新,如:update tb_x x set x = '***' where x.id = 1;遇到批量更新可以用merge也可以用update还可以用游标等。平时用的比较多的是merge和update

变相update:

UPDATE tb_a s
SET s.name = (
  SELECT b.name FROM tb_b b WHERE s.id = b.id AND s.name != b.name
)
WHERE EXISTS (
  SELECT 1 FROM tb_b b WHERE s.id = b.id AND s.name != b.name

内联视图法:

UPDATE (
  SELECT
    s.name as sname, b.name as bname
 FROM
    tb_a s, tb_b b
 WHERE
    s.id = b.id AND s.name != b.name
)
SET sname = bname;

merge法:

MERGE INTO tb_a s 
USING tb_b b ON (
 s.id = b.id 
)
WHEN MATCHED THEN
 UPDATE SET s.name = b.name;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值