2014-02-27 87 views
0

是否有任何其他方式通过连接两个表返回行,如果任何列的值为相同的ID是不同的。返回行的另一种方式,如果任何列对于相同的ID具有不同的值

Select Table1.No,Table2.No,Table1.Name,Table2.Name,Table1.ID,Table2.ID,Table1.ID_N,Table2.ID_N 
From MyFirstTable Table1 
JOIN MySecondTable Table2 
ON Table1.No=Table2.No where Table1.ID!=Table2.ID or Table1.ID_N != Table2.ID_N 

在上面的例子中,我只有两列我需要检查,但在我的真实情况下,至少有20个。

是否有任何其他陈述我可以使用,而不是列举每个列在哪里进行编码?

回答

0
...WHERE BINARY_CHECKSUM(Table1.*) <> BINARY_CHECKSUM(Table2.*) 

...WHERE BINARY_CHECKSUM(Table1.Field1, Table1.Field2, ...) <> BINARY_CHECKSUM(Table2..Field1, Table2.Field2, ...) 

*这里假设你有没有BLOB字段在你的表

http://technet.microsoft.com/en-us/library/ms173784.aspx

+0

好吧,我需要Where公司只有20/40列不是整个桌子。 – user3341031

+0

增加了不使用所有字段的选项 –

0

如果没有一个PK

Select Table1.No,Table1.Name,Table1.ID,Table1.ID_N 
From MyFirstTable Table1 
except 
Select Table1.No,Table1.Name,Table1.ID,Table1.ID_N 
From MySecondTable Table1 
+0

嗯我需要的代码表Table1.No = Table2.No并且'except'比使用Join更好吗? – user3341031

+0

你问另一种方式。这是另一种方式。 – Paparazzi

相关问题