SQL-查找表中的差异并在表中插入/更新缺少的值

SQL-查找表中的差异并在表中插入/更新缺少的值,sql,sql-server,Sql,Sql Server,我有一个SQLServerExpress数据库,其中包含一个从系统生成的表,我不想对其进行操作,因此我创建了另一个表 表1 AreaName Area_1 Area_2 Area_3 Area_4 表2 Area_1 Area_2 我想搜索表之间的差异(我已经对其进行了排序) 与表_1相比,表_2中缺少的值应作为新行插入 一句话能做到吗 SELECT MIN (TableName) AS TableName, Area FROM (SELECT

我有一个SQLServerExpress数据库,其中包含一个从系统生成的表,我不想对其进行操作,因此我创建了另一个表

表1

AreaName
Area_1       
Area_2
Area_3
Area_4
表2

Area_1
Area_2
  • 我想搜索表之间的差异(我已经对其进行了排序)
  • 与表_1相比,表_2中缺少的值应作为新行插入
  • 一句话能做到吗

    SELECT 
        MIN (TableName) AS TableName,
        Area 
    FROM 
        (SELECT 
            'Table A' AS TableName, 
            Table_2.Area
         FROM Table_2 
    
         UNION ALL
    
         SELECT 
            'Table B' AS TableName, 
            Area
         FROM [Table_1]) tmp 
    GROUP BY 
       Area
    HAVING 
       COUNT(*) = 1 
    ORDER BY 
       Area;
    

    这是我现在用来排序的SQL…

    实现这一点的简单方法:

    INSERT INTO Table_2 (AreaName)
    SELECT AreaName FROM Table_1
    WHERE AreaName NOT IN (SELECT AreaName FROM Table_2)
    

    谢谢,这解决了我的问题。有时你看不见森林,因为所有的树都是如此;)
    Insert into table1 (columns)
    select Columns from table2 a
    where not exists(select * from table3 b where a.ID =b.ID)