oracle常用批量更新方法

开发中难免会遇到批量更新表中字段的情况,比如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;


版权声明:本文为jack8068469原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。