我正在创建一个sproc,将行插入到’staging’表中,插入到子查询中,如下所示:
INSERT INTO myStagingTable SELECT col1,col2,col3 FROM myRealTable@H_403_4@我需要在某种情况下放置一个条件,以确定col1中的值是否已经存在于myStagingTable上,那么不要插入它,只需从myRealTable中跳过该行. @H_403_4@这可能吗?如果是这样,我该如何组织呢? @H_403_4@TIA
解决方法
INSERT INTO myStagingTable SELECT col1,col3 FROM myRealTable rt WHERE NOT EXISTS ( SELECT rt.col1,rt.col2,rt.col3 INTERSECT SELECT col1,col3 FROM myStagingTable )@H_403_4@这将处理所有重复(包括NULL) @H_403_4@注意是将真正的表中插入的副本是any.说如果真正的表包含
1 1 1 1 1 1@H_403_4@并且分期表包含
2 2 2@H_403_4@,将插入具有1,1,1的记录. @H_403_4@如果要删除插入的重复项(因此只插入一个1,1的实例),那么只需使用:
INSERT INTO myStagingTable SELECT col1,col3 FROM myRealTable EXCEPT SELECT col1,col3 FROM myStagingTable