【发布时间】:2014-10-18 05:34:30
【问题描述】:
我的问题很简单。我正在尝试将 UPDATE 语句转换为 MERGE 语句以获得更好的性能,因为更新计数可能在 10K - 1M 之间。这是我的更新代码:
UPDATE table_1 t1
SET t1.col_1 =
(SELECT t2.name
FROM table_2 t2
WHERE t2.fn = t1.col_1),
t1.Col_3 =
(SELECT t2.name
FROM table_2 t2
WHERE t2.fn = t1.Col_3),
t1.Col_5 =
(SELECT t2.name
FROM table_2 t2
WHERE t2.fn = t1.Col_5);
我尝试改成MERGE:
MERGE INTO Table_1
USING (SELECT NAME FROM table_2) A
ON (1 = 1)
WHEN MATCHED
THEN
UPDATE SET Table_1.col_1 = A.NAME,
Table_1.col_3 = A.NAME,
Table_1.col_5 = A.NAME;
以上代码报错,请帮我解决问题。提前致谢。
【问题讨论】:
-
添加错误信息。
-
您使用的是哪个 DBMS?甲骨文? SQL Server?
-
@Jens 错误:无法获得要更新的稳定计数
-
@a_horse_with_no_name 我正在使用 Oracle 10G
标签: sql oracle merge sql-update