内部联接更新

Pra*_*mod 1 sql oracle11g

我有两个表TAB_1

FID   T_NAME_1 NAME2
---------------------
Run Code Online (Sandbox Code Playgroud)

TAB_2

FID   T_NAME_2   NAME3
----------------------
Run Code Online (Sandbox Code Playgroud)

对于tab_1和tab_2的所有匹配fid,有一些与T_NAME_1和T_NAME_2不匹配的字段,不应该存在.所以我想更新表tab_1的t_name_1,其中包含所有未匹配的t_name_2值.我尝试了以下返回错误的查询

update tab_1 set t_name_1 = (  select  t2.t_name_2 from tab_2 t2 left join tab_1 t1 on 
t1.fid = t2.fid where t1.t_name_1 <> t2.t_name_2)
Run Code Online (Sandbox Code Playgroud)

Did*_*doo 5

尝试:

update tab_1 t1
   set t_name_1 = (select t2.t_name_2
                     from tab_2 t2
                    where t1.fid = t2.fid
                      and t1.t_name_1 <> t2.t_name_2)
 where exists (select 1
          from tab_2 t2
         where t1.fid = t2.fid
           and t1.t_name_1 <> t2.t_name_2)
Run Code Online (Sandbox Code Playgroud)