我有这样的逻辑。
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中编写?
答案 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