更新前的Oracle Select

Avi*_*ash 1 oracle

在Oracle中,可以选择数据集并将其用于更新,就像在Merge语句中一样.

我正在寻找类似的东西

USING
(
SELECT a, b, c FROM t
)
UPDATE t1
SET t1.x = t.a,
t1.y = t.b;
Run Code Online (Sandbox Code Playgroud)

Jus*_*ave 7

这听起来像你只是想

UPDATE t1
   SET (x, y) = (SELECT a, b
                   FROM t
                  WHERE t.some_column = t1.some_column);
Run Code Online (Sandbox Code Playgroud)

如果您只想更新T1中的行,如果T中有匹配的行

UPDATE t1
   SET (x, y) = (SELECT a, b
                   FROM t
                  WHERE t.some_column = t1.some_column)
 WHERE EXISTS (
   SELECT 1
     FROM t
    WHERE t.some_column = t1.some_column );
Run Code Online (Sandbox Code Playgroud)

如果SELECT from T返回单行,则可以省略连接两个表的WHERE子句.