首页 > 解决方案 > Oracle - 使用第二个表中的行更新第一个表中的数据

问题描述

如何在 20/07/20 时使用 'modfied' (t2) 更新 'date_from' (t1)。

所以在这种情况下,在 t1 中,id 的 1 和 2 将被更新,id 3 保持不变。

表格1:

id    date_from
-----------------------
1     13/07/30
2     13/07/30
3     13/07/30

表 2:

id    name    modified
-----------------------
1     x       20/07/20
2     y       20/07/20
3     z       19/05/10

标签: sqloraclesql-updatesubquery

解决方案


如果速度很重要,那么

merge into t1 trg
using 
(
    select  id, modified
    from    t2
    where   modified = date'2020-07-20'
) src
on ( trg.id = src.id )
when matched then update
set trg.date_from = src.modified
where lnnvl(trg.date_from = src.modified);

推荐阅读