我需要根据另外两个表的连接更新一个主表。 anyoe请在这里为我提供最好的方法,因为我需要使用此更新来更新数百万条记录。
答案 0 :(得分:0)
也许这个例子很有用:
CREATE TABLE A(
ID INT,
STR VARCHAR2(10));
CREATE TABLE B(
ID INT,
STR VARCHAR2(10));
INSERT INTO A VALUES(1,'A1');
INSERT INTO A VALUES(2,'A2');
INSERT INTO A VALUES(3,'A3');
INSERT INTO B VALUES(1,'B');
INSERT INTO B VALUES(3,'C');
INSERT INTO B VALUES(4,'D');
/*HERE THE QUERY!!*/
MERGE INTO A
USING ( select ID, STR
from B ) B
ON ( A.ID = B.ID )
WHEN MATCHED THEN
UPDATE SET A.STR = B.STR;
这里有其他查询,但可能会遇到NULL值问题(尝试here):
UPDATE A
SET STR = (
SELECT STR
FROM B
WHERE A.ID = B.ID);
您可以尝试此here
答案 1 :(得分:0)
我认为您需要的是相关更新声明,请检查此链接Oracle correlated UPDATE