删除插入目标表中已有的新记录

时间:2016-11-15 07:20:24

标签: sql sql-server ssis

我有2台服务器2009和2012服务器。我已经将2012服务器数据中的数据插入到新的临时表中,现在我必须将2009服务器数据插入到同一个临时表中。如果2009年数据记录与现有记录匹配,那么我不想插入该记录,并且所有其他数据应该插入到分段中。

3 个答案:

答案 0 :(得分:1)

尝试以下查询

使用NOT EXISTS

INSERT INTO TABLE_2
  (id, name)
SELECT t1.id,
       t1.name
  FROM TABLE_1 t1
 WHERE NOT EXISTS(SELECT id
                    FROM TABLE_2 t2
                   WHERE t2.id = t1.id)

使用NOT IN

INSERT INTO TABLE_2
  (id, name)
SELECT t1.id,
       t1.name
  FROM TABLE_1 t1
 WHERE t1.id NOT IN (SELECT id
                       FROM TABLE_2)

答案 1 :(得分:0)

只是替代使用连接而不是退出的答案:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl">
  <table>
    <thead>
      <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Town</th>
        <th>Date</th>
        <th>Stat1</th>
        <th>Stat2</th>
        <th>Stat3</th>
        <th>Stat4</th>
      </tr>
    </thead>
    <tbody ng-repeat="(key, value) in grouped">
      <tr ng-repeat="val in value.array">
        <td>{{val.id}}</td>
        <td>{{val.town}}</td>
        <td>{{val.nom}}</td>
        <td>{{val.date}}</td>
        <td>{{val.stat1}}</td>
        <td>{{val.stat2}}</td>
        <td>{{val.stat3}}</td>
        <td>{{val.stat4}}</td>
      </tr>
      <tr class="total">
        <td>TOTAL</td>
        <td>-</td>
        <td>-</td>
        <td>-</td>
        <td>{{value.total.totalStat1}}</td>
        <td>{{value.total.totalStat2}}</td>
        <td>{{value.total.totalStat3}}</td>
        <td>{{value.total.totalStat4}}</td>
      </tr>
    </tbody>
  </table>
  
  <div>
    Total stat 1 : {{total.totalStat1}} -
    Total stat 2 : {{total.totalStat2}} -
    Total stat 3 : {{total.totalStat3}} -
    Total stat 4 : {{total.totalStat4}} -
  </div>
</div>

当多个临时表或“补充”表(添加来自其他表的数据)时,这可以更容易阅读。

的问候,
塞尔吉奥

答案 2 :(得分:0)

为server 2008创建链接服务器。编写OPENQUERY以访问服务器2008表。

现在使用SSIS的执行SQL任务并使用除服务器2012表之外的SQL Server 2008表。