Oracle更新前选择
在Oracle中,有一种方法可以选择数据集并将其用于更新,就像在Merge语句中一样 我在找像这样的东西Oracle更新前选择,oracle,Oracle,在Oracle中,有一种方法可以选择数据集并将其用于更新,就像在Merge语句中一样 我在找像这样的东西 USING ( SELECT a, b, c FROM t ) UPDATE t1 SET t1.x = t.a, t1.y = t.b; 听起来你只是想 UPDATE t1 SET (x, y) = (SELECT a, b FROM t WHERE t.some_column = t1.some_colum
USING
(
SELECT a, b, c FROM t
)
UPDATE t1
SET t1.x = t.a,
t1.y = t.b;
听起来你只是想
UPDATE t1
SET (x, y) = (SELECT a, b
FROM t
WHERE t.some_column = t1.some_column);
如果只想在T中有匹配行的情况下更新T1中的行
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 );
如果SELECT from T返回一行,您可以省略连接两个表的WHERE子句。听起来您只是想
UPDATE t1
SET (x, y) = (SELECT a, b
FROM t
WHERE t.some_column = t1.some_column);
如果只想在T中有匹配行的情况下更新T1中的行
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 );
如果SELECT from T返回一行,可以省略连接两个表的WHERE子句。这应该可以解决我的问题,但我担心性能。这是一个相关子查询,与merge语句中的select子句不同,它非常繁重。如果我不高兴,请纠正我wrong@Avinash-执行仅更新其合法语法是否取决于Oracle版本的合并应该不会比执行相关更新更有效。这应该可以解决我的问题,但我担心性能。这是一个相关子查询,与merge语句中的select子句不同,它非常繁重。如果我不高兴,请纠正我wrong@Avinash-执行仅更新其合法语法是否取决于Oracle版本的合并不会比执行相关更新更有效。要执行类似于合并语句中的更新,为什么不使用合并语句?when matched和when not matched子句都是可选的。要在不插入的情况下执行更新,请使用just the when matched子句。要执行类似于Merge语句的更新,为什么不使用Merge语句?when matched和when not matched子句都是可选的。要在不插入的情况下执行更新,请使用when matched子句。