0

我需要根据来自另外 2 个表的连接来更新一个主表。任何人都可以在这里为我提供最佳方法,因为我需要使用此更新更新数百万条记录。

4

2 回答 2

0

我认为您需要的是Correlated update语句,请查看此链接Oracle related UPDATE

于 2013-07-17T18:10:58.437 回答
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 值的问题(试试这里):

UPDATE A
SET STR = (
  SELECT STR
  FROM B
  WHERE A.ID = B.ID);

你可以在这里试试

于 2013-07-17T17:40:08.900 回答