在Oracle中可以選擇數據集並像Merge語句中那樣使用它進行更新。Oracle在更新之前選擇
我正在尋找類似
USING
(
SELECT a, b, c FROM t
)
UPDATE t1
SET t1.x = t.a,
t1.y = t.b;
在Oracle中可以選擇數據集並像Merge語句中那樣使用它進行更新。Oracle在更新之前選擇
我正在尋找類似
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從T
返回單行,則可以省略WHERE子句加入這兩個表。
這應該解決我的問題,但我擔心的表現。這是一個與合併語句中的select子句不同的相關子查詢。如果我錯了,請糾正我的錯誤 – Avinash
@Avinash - 執行只有更新的MERGE(不管這是否合法語法取決於Oracle版本)應該不會更有效,而不是執行相關更新。 –
要像「在合併語句中」那樣進行更新,爲什麼不使用合併語句? 'when matched'和'when not matched'子句都是可選的。要在沒有插入的情況下進行更新,只需使用'when matched'子句。 –