使用oracle中的某些条件将记录插入另一个表中的一个表中

时间:2015-07-07 15:16:05

标签: oracle

我需要将记录插入另一个表中的一个表中,该表是其他表的精确副本,条件是将其置于同一记录(对于某些条件匹配)来自另一个表时它将更新现有记录和当一张全新的唱片出现时,它会插入唱片。

我已经为此编写了以下查询,请尽可能纠正我。

INSERT INTO  TEMP1   (B,C,D,PROVIDER_ID,NATIONAL_PROVIDER_IDENTIFIER,TAXONIMY_CODE,F,G,H) 
SELECT  W.B,W.C,W.D,W.PROVIDER_ID,W.NATIONAL_PROVIDER_IDENTIFIER,W.TAXONIMY_CODE,W.F,W.G,W.H
FROM TEMP2 W LEFT JOIN  TEMP1 A ON( A.provider_id = W.provider_id
AND A.NATIONAL_PROVIDER_IDENTIFIER = W.NATIONAL_PROVIDER_IDENTIFIER
AND A.TAXONOMY_CODE = W.TAXONOMY_CODE)
WHERE  W.SOURCE_ID = 'COSMOS'

1 个答案:

答案 0 :(得分:0)

我仍然有点不清楚,但听起来你想要使用MERGE statement

如果是这样,您的陈述将如下所示(希望我理解您的数据模型)

MERGE INTO TEMP1 a
USING (
  SELECT B,C,D,PROVIDER_ID,NATIONAL_PROVIDER_IDENTIFIER,TAXONIMY_CODE,F,G,H
  FROM TEMP2
  WHERE SOURCE_ID = 'COSMOS'
) w
ON (a.provider_id = w.provider_id AND 
    a.NATIONAL_PROVIDER_IDENTIFIER = w.NATIONAL_PROVIDER_IDENTIFIER AND
    a.TAXONOMY_CODE = w.TAXONOMY_CODE
)
WHEN MATCHED THEN
  UPDATE SET a.b = w.b,
             a.c = w.c,
             a.d = w.d,
             a.f = w.f,
             a.g = w.g,
             a.h = w.h
WHEN NOT MATCHED THEN
  INSERT (a.B,a.C,a.D,a.PROVIDER_ID,a.NATIONAL_PROVIDER_IDENTIFIER,a.TAXONIMY_CODE,a.F,a.G,a.H)
  VALUES (w.B,w.C,w.D,w.PROVIDER_ID,w.NATIONAL_PROVIDER_IDENTIFIER,w.TAXONIMY_CODE,w.F,w.G,w.H);