Kyl*_*yle 14 t-sql conditional stored-procedures insert
我正在创建一个sproc,它会将行插入到'staging'表中,并插入+子查询,如下所示:
INSERT INTO myStagingTable
SELECT col1, col2, col3
FROM myRealTable
Run Code Online (Sandbox Code Playgroud)
我需要以某种方式在那里放置一个条件来确定来自col1的值是否已经存在于myStagingTable上,然后不插入它,只是从myRealTable跳过该行.
这可能吗?如果是这样,我将如何构建?
TIA
Qua*_*noi 16
INSERT
INTO myStagingTable
SELECT col1, col2, col3
FROM myRealTable rt
WHERE NOT EXISTS
(
SELECT rt.col1, rt.col2, rt.col3
INTERSECT
SELECT col1, col2, col3
FROM myStagingTable
)
Run Code Online (Sandbox Code Playgroud)
这将处理所有重复(包括NULL)
注意,将从真实表中插入重复项是任意的.假设真实表包含
1 1 1
1 1 1
Run Code Online (Sandbox Code Playgroud)
并且登台表包含
2 2 2
Run Code Online (Sandbox Code Playgroud)
,1, 1, 1将插入两个记录.
如果你想消除插入的重复项(这样只1, 1, 1插入一个实例),那么只需使用:
INSERT
INTO myStagingTable
SELECT col1, col2, col3
FROM myRealTable
EXCEPT
SELECT col1, col2, col3
FROM myStagingTable
Run Code Online (Sandbox Code Playgroud)