2013-06-25 147 views
-1

是否可以根據Oracle中另一個表中的值更新表中的值?根據另一個表中的值更新表中的值

我試圖完成這樣的事(我知道這是不是一個正確的UPDATE語句):

UPDATE table1 
    SET table1.flag = 1 
    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' 
+0

@Ben這不是重複。在那個問題中,他們想用另一個表中的值更新該字段。我想根據另一個表中的值進行更新(作爲條件的一部分) – Zzz

+1

這是完全重複的Azzi,答案中提出的所有解決方案的工作方式都完全相同。無論您是設置「標誌」還是使用列進行更新都無關緊要。我會使用MERGE選項,因爲我發現它更容易理解正在發生的事情。 – Ben

+0

@Ben問題是不同的;不管答案是否相同。 – Zzz

回答

1

我希望你在表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'    
       ) 
相關問題