Tsql T-SQL,从源中的列中获取不同的值,检查目标,如果不存在则插入

Tsql T-SQL,从源中的列中获取不同的值,检查目标,如果不存在则插入,tsql,Tsql,我见过几个类似的问题,但没有一个和我的完全一样。T-SQL的上帝应该能够回答这是一个闪光 来自HRMS系统提要的员工和部门代码的源表(提要)。我的SQL Server数据库中有一个employees表和一个departments表。我需要有一个存储过程,它将首先在feeder表中获得部门代码的不同列表,然后检查这些代码以查看它们是否存在于departments表中。如果没有,则从feeder表插入departments表。然后,在employee表中插入 现在,我发现其中一位业务分析师在Exce

我见过几个类似的问题,但没有一个和我的完全一样。T-SQL的上帝应该能够回答这是一个闪光

来自HRMS系统提要的员工和部门代码的源表(提要)。我的SQL Server数据库中有一个employees表和一个departments表。我需要有一个存储过程,它将首先在feeder表中获得部门代码的不同列表,然后检查这些代码以查看它们是否存在于departments表中。如果没有,则从feeder表插入departments表。然后,在employee表中插入

现在,我发现其中一位业务分析师在Excel中获得了单独的部门列表,并手动添加它们。当数据已经从HRMS进入进料器表时,看起来很疯狂。我可以进行插入,但我不知道如何在feeder表中循环,以查看departments表中是否已经存在每行中的department代码。谢谢你的帮助

J.

您可以在SQL 2008或更高版本中使用关键字。我刚刚测试了这个片段:

merge department as d
using feeder as f on f.code = d.code
  when not matched then
    insert (code)
      values (f.code);

合并将起作用。由于我们只是做插入,这也将:

INSERT 
    department
    ( 
       departmentCode
    )
SELECT departmentcode 
FROM 
    ( 
        SELECT 
            departmentcode 
        FROM 
            feeder
        EXCEPT 
        SELECT 
            departmentcode
        FROM 
            department
    ) c;
对于两个表中的departmentcode索引,此模式通常表现良好