使用where子句中的两个表更新Oracle中的表

时间:2011-08-23 08:20:29

标签: mysql oracle

我有以下查询,它在MySQL中运行,我需要帮助和提示为Oracle 11g重写它。 (我是PL / SQL的新手。)

update table1 n, table2 t
set n.col1 = t.col1, n.col2 = t.col2
where t.col3 = n.col3;

2 个答案:

答案 0 :(得分:2)

尝试这样的事情。

UPDATE 
  (
      SELECT n.col1 AS n_col1, n.col2 AS n_col2, t.col1 AS t_col1, t.col2 AS t_col2 
      FROM table1 n 
      JOIN tabble2 t ON n.col3=t.col3
  ) a 
SET a.n_col1 = a.t_col1, 
    a.n_col2 = a.t_col2

答案 1 :(得分:1)

UPDATE table1 n
   SET (n.col1, n.col2) = (SELECT t.col1, t.col2
                             FROM table2 t
                            WHERE t.col3 = n.col3)
 WHERE EXISTS (SELECT 'x'
                 FROM table2 t
                WHERE t.col3 = n.col3);