加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

tsql – sql条件插入,如果行不存在

发布时间:2020-12-12 16:11:06 所属栏目:MsSql教程 来源:网络整理
导读:我正在创建一个sproc,将行插入到’staging’表中,插入到子查询中,如下所示: INSERT INTO myStagingTableSELECT col1,col2,col3FROM myRealTable 我需要在某种情况下放置一个条件,以确定col1中的值是否已经存在于myStagingTable上,那么不要插入它,只需从myRea
我正在创建一个sproc,将行插入到’staging’表中,插入到子查询中,如下所示:
INSERT INTO myStagingTable
SELECT col1,col2,col3
FROM myRealTable

我需要在某种情况下放置一个条件,以确定col1中的值是否已经存在于myStagingTable上,那么不要插入它,只需从myRealTable中跳过该行.

这可能吗?如果是这样,我该如何组织呢?

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
        )

这将处理所有重复(包括NULL)

注意是将真正的表中插入的副本是any.说如果真正的表包含

1 1 1
1 1 1

并且分期表包含

2 2 2

,将插入具有1,1,1的记录.

如果要删除插入的重复项(因此只插入一个1,1的实例),那么只需使用:

INSERT
INTO    myStagingTable
SELECT  col1,col3
FROM    myRealTable
EXCEPT
SELECT  col1,col3
FROM    myStagingTable

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读