Oracle 基于另一个表中的值更新表中的值

Oracle 基于另一个表中的值更新表中的值,oracle,join,sql-update,Oracle,Join,Sql Update,是否可以基于Oracle中另一个表中的值更新表中的值 我正在尝试完成类似的事情(我知道这不是一个合适的更新语句): 我希望您在表1中有一个主键,所以使用它而不是rowid,但如果您没有使用 update table1 set flag =1 where rowid in ( select t1.rowid FROM table1 t1 INNER JOIN table2 t2 ON t1.emp_id = t2.em

是否可以基于Oracle中另一个表中的值更新表中的值

我正在尝试完成类似的事情(我知道这不是一个合适的更新语句):


我希望您在表1中有一个主键,所以使用它而不是rowid,但如果您没有使用

update table1
set flag =1
where rowid in ( select t1.rowid
                 FROM table1 t1 
                      INNER JOIN table2 t2 ON t1.emp_id = t2.emp_id 
                 INNER JOIN table3 t3 ON t2.company = t3.company
                 WHERE t1.emp_id = '5632'
                       AND l2.company = '83CP'
                       AND t1.code = 'LIEU'              
               )

@本:这不是复制品。在这个问题上,他们希望用另一个表中的值更新字段。我想根据另一个表中的值进行更新(作为条件的一部分),这是一个完全重复的Azzi,答案中提出的所有解决方案都将以完全相同的方式工作。无论是设置“标志”还是使用列进行更新。我会使用合并选项,因为我发现更容易理解发生了什么。@Ben问题是不同的;答案是否相同。你在争论用另一列或常数的值更新一列是否相同?到目前为止,我是唯一投票决定关闭的人,你可以完全忽略我,但是,无论你得到什么答案,都是相同的,除非它不是
更新集a.column=b.column
,而是
更新集a.column=1
。如果你不同意这些是相同的,那就是你的过去时;但是,我希望您能够将代码应用到自己的查询中。如果你不能,你可能会考虑更新你的答案与你所面临的问题。
update table1
set flag =1
where rowid in ( select t1.rowid
                 FROM table1 t1 
                      INNER JOIN table2 t2 ON t1.emp_id = t2.emp_id 
                 INNER JOIN table3 t3 ON t2.company = t3.company
                 WHERE t1.emp_id = '5632'
                       AND l2.company = '83CP'
                       AND t1.code = 'LIEU'              
               )