具有相同主键但不同第二列的两个表之间的差异

时间:2016-04-19 15:48:42

标签: sql select insert

我有两个版本的数据库(v1和v2),我收集了v2中新增的所有内容,并使用此查询将其插入到临时数据库中

INSERT INTO [tmp].[dbo].[Mat] 
    SELECT * 
    FROM [v2].[dbo].[Mat] 
    WHERE myid NOT IN (SELECT myid FROM [v1].[dbo].[cMat_Mat])

Mat的列是myid(主键),matnumber和其他一些列。

问题是,我们在某些情况下更改了matnumber,但它没有将其视为新内容,因为我只比较myid

所以这是我的问题。我需要那些位于[v1].[dbo].[cMat_Mat][v2].[dbo].[Mat]并且具有相同myid但不同matnumber的行。我怎么查询? ......用SELECT来证明结果。

1 个答案:

答案 0 :(得分:4)

只需join具有所需条件的表格。

INSERT INTO [tmp].[dbo].[Mat] 
SELECT v2m.* 
FROM [v2].[dbo].[Mat] v2m
JOIN [v1].[dbo].[cMat_Mat] v1m on v1m.myid = v2m.myid and v1m.[cMat_Mat] <> v2m.[cMat_Mat]