将从连接条件中删除的记录插入到另一个保持表中

时间:2014-04-17 10:46:45

标签: sql select insert conditional-statements ansi-sql

我有这样的逻辑。

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中编写?

1 个答案:

答案 0 :(得分:1)

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

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