首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不存在的情况下从2个表中插入数据

在不存在的情况下从2个表中插入数据
EN

Stack Overflow用户
提问于 2013-09-16 12:44:50
回答 1查看 118关注 0票数 0

我想将数据从表临时插入到原始表。

结构相同,但有3个键,如下所示

代码语言:javascript
复制
table original 
{NIP_SPV  nvarchar (10),
NIP_SUB nvarchar (10),
TransActionDate date,
...
}

我想在不存在数据的地方插入数据。

我的代码如下所示

代码语言:javascript
复制
IF NOT EXISTS ( 
   SELECT * FROM table_original a Inner Join table_temp b  
   on a.transactiondate = b.transactiondate and a.nip_spv = b.nip_spv 
   and a.nip_sub = b.nip_sub )  
      Begin 
        INSERT INTO T_EmployeeGroup 
        select nip_spv,nip_sub,spv_usertype,sub_usertype,appr_year  
        from table_temp
      END
 Else 
    Begin
      Update  A
      A.column_n =B.column_n
      from table_original A
      Inner JOIN table_temp B 
      on  a.transactiondate = b.transactiondate and a.nip_spv = b.nip_spv 
      and a.nip_sub = b.nip_sub
    end

情况是

代码语言:javascript
复制
when i insert data for the second time is failed
 first case i insert 10 data
 second case i insert 20 data(10 old data from first case)

从新数据中插入10个数据失败。

我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-16 12:52:50

可以为此使用OUTER JOIN并对空值进行筛选:

代码语言:javascript
复制
INSERT INTO table_original 
SELECT b.* FROM table_temp b
RIGHT JOIN table_original a ON a.transactiondate = b.transactiondate
                          AND a.nip_spv = b.nip_spv 
                          AND a.nip_sub = b.nip_sub
WHERE b.transactiondate IS NULL
  AND b.nip_spv IS NULL
  AND b.nip_sub IS NULL
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18828432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档