2012-04-25 66 views
2

我有一种情况,我使用某个第三方实用程序更新了一个表,并且想要将它与原始表进行比较并确保它做出正确的更新和插入。获取表中所有字段不完全匹配的所有记录JOIN

所以,我想这样做,但我不太知道的语法:

SELECT * FROM table1 AS a RIGHT OUTER JOIN table2 AS b WHERE 
    <there is some difference between the row from a and the row from b, 
    regardless of which column it's in> 

我如何可以比较所有字段,而不必明确写出他们都一个接1 ?

编辑:我还要提到的是我没有在表中的副本更新,因此假定是原始,是更新的副本。

回答

4

你应该使用为负查询

select field1, field2, field3, field4 
    from table1 
except 
select field1, field2, field3, field4 
    from table2 

这将返回从表1是其数据(字段1,字段2,字段3,字段4)不能对表2中的所有行。警告:它不会反其道而行,所以如果您还需要table2中的数据而不是table1中的数据,那么您必须执行第二个查询来执行table2 MINUS table1。

+2

TSQL中的负关系运算符是“EXCEPT”(与标准SQL相同)。 – onedaywhen 2012-04-25 13:26:46

+0

一旦我将它改为EXCEPT,看起来就像是一样。 – 2012-04-25 13:27:59

+0

@onedaywhen对不起,我来自Oracle开发:) – 2012-04-25 13:30:02

相关问题