SQL导入数据 - 仅在不存在时插入

时间:2013-02-09 19:46:26

标签: sql sql-server-2008

我正在使用SQL Server管理工具2008将数据导入Web主机数据库。我有主键表。 (每行的ID)现在我可以正常导入数据。但是当我第二次导入数据时......我需要确保只有那些当前不存在的行才会被插入。如果要使用向导执行此操作?如果没有,那么最佳做法是什么?

2 个答案:

答案 0 :(得分:1)

  1. 将数据插入临时表
  2. 使用左连接与主表来标识要插入的记录
  3. -

    CREATE TABLE T1(col1 int)
    go
    
    CREATE TABLE Temp(col1 int )
    go
    
    INSERT INTO T1
    SELECT 1 
    UNION 
    SELECT 2
    
    INSERT INTO TEMP
    SELECT 1 
    UNION 
    SELECT 2
    UNION 
    SELECT 3 
    UNION 
    SELECT 4 
    
    INSERT INTO T1 
    SELECT TEMP.col1
    FROM Temp 
    LEFT JOIN T1 
      ON TEMP.col1 = T1.col1
    WHERE T1.col1 IS NULL 
    

答案 1 :(得分:0)

我前段时间使用过它,也许它有所帮助:

insert into timestudio.dbo.seccoes (Seccao,Descricao,IdRegiao,IdEmpresa)
  select distinct CCT_COD_CENTRO_CUSTO, CCT_DESIGNACAO, '9', '10' from rhxxi.dbo.RH_CCTT0 
  where CCT_COD_CENTRO_CUSTO not in (select Seccao from TimeStudio.dbo.Seccoes where idempresa = '10')

或者,只需使用简单的IF语句。