根据另外2个表中的数据更新ORacle中的语句

时间:2013-07-17 17:17:46

标签: oracle

我需要根据另外两个表的连接更新一个主表。 anyoe请在这里为我提供最好的方法,因为我需要使用此更新来更新数百万条记录。

2 个答案:

答案 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