处理删除和更新通过比较两个表
问题描述:
我有两个表,我想在这种意义上比较,如果circuitId
是相同的两列它应该检查如果CHECKSUM列是否相同,如果他们是同样也不会在表格中插入新记录。如果circiutId
不在表中,它应该添加一个新行。处理删除和更新通过比较两个表
到目前为止,我有这个,但我不知道如何实现,以便在WHEN MATCHED THEN
的逻辑里面。所以它内部检查校验和是否相同,从而插入记录?
MERGE INTO ARCHIVE.F1_CIRCUITS n
USING EXTRACT.F1_CIRCUITS o
ON
(n.CIRCUITID= o."circuitId")
WHEN MATCHED THEN
WHEN NOT MATCHED THEN
INSERT VALUES
("circuitId","circuitRef","name","location","country","lat","lng","alt","url", CURRENT_TIMESTAMP, NULL, HASH_MD5("circuitId","circuitRef","name","location","country","lat","lng","alt","url"), 'C', 0)
答
我觉得insert
是足够了:
INSERT INTO ARCHIVE.F1_CIRCUITS (. . .)
SELECT . . .
FROM EXTRACT.F1_CIRCUITS o
WHERE NOT EXISTS (SELECT 1
FROM ARCHIVE.F1_CIRCUITS n
WHERE o.circuitid = n.circuitid AND
o.checksum = n.checksum
);
的. . .
是不同的列名和表达式。