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

前端之家收集整理的这篇文章主要介绍了tsql – sql条件插入,如果行不存在前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在创建一个sproc,将行插入到’staging’表中,插入到子查询中,如下所示:
  1. INSERT INTO myStagingTable
  2. SELECT col1,col2,col3
  3. FROM myRealTable

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

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

TIA

解决方法

  1. INSERT
  2. INTO myStagingTable
  3. SELECT col1,col3
  4. FROM myRealTable rt
  5. WHERE NOT EXISTS
  6. (
  7. SELECT rt.col1,rt.col2,rt.col3
  8. INTERSECT
  9. SELECT col1,col3
  10. FROM myStagingTable
  11. )

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

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

  1. 1 1 1
  2. 1 1 1

并且分期表包含

  1. 2 2 2

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

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

  1. INSERT
  2. INTO myStagingTable
  3. SELECT col1,col3
  4. FROM myRealTable
  5. EXCEPT
  6. SELECT col1,col3
  7. FROM myStagingTable

猜你在找的MsSQL相关文章