2014-02-19 25 views
1

我有一個SQL Server Express數據庫,其中包含一個表,它由一個我不想操作的系統生成,因此我創建了另一個表。SQL - 查找表中的差異並插入/更新到表中缺失的值

TABLE_1

AreaName 
Area_1  
Area_2 
Area_3 
Area_4 

TABLE_2

Area_1 
Area_2 
  1. 我想搜索表之間的差異(我已經排序時)在TABLE_2
  2. 值缺失比較了TABLE_1應插入爲新的行。

在一個聲明中可以這麼做嗎?

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 ...

回答

1

簡單的方法來做到這一點:

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

感謝,認爲整理我的問題。有時你不能看到所有樹木的森林;) – Kr4k4n

0
Insert into table1 (columns) 
select Columns from table2 a 
where not exists(select * from table3 b where a.ID =b.ID) 
相關問題