将从联接条件中删除的记录插入另一个保留表中



我有这样的逻辑。

INSERT INTO TGT_TABLE
SELECT
*
FROM SRC_TABLE
INNER JOIN REF_TABLE
WHERE SRC.ID = REF.ID
WHEN NOT MATCHED
INSERT INTO HOLDING_TABLE
;

我有一个insert-select语句,我希望将不满足条件的记录记录记录到另一个表中。

如何在SQL中编写?

首先,您的联接语法是错误的,正确的是

INSERT INTO TGT_TABLE
SELECT
*
FROM SRC_TABLE
INNER JOIN REF_TABLE
ON SRC.ID = REF.ID

现在,要获取两个表中都不存在匹配列值的行,请执行左联接,为不匹配的行在REF_TABLE列中提供NULL值,并在WHERE子句中获取这些行

INSERT INTO HOLDING_TABLE
SELECT
*
FROM SRC_TABLE
LEFT JOIN REF_TABLE
ON SRC.ID = REF_TABLE.ID
WHERE REF_TABLE.ID is null

最新更新