如果任何列具有相同id的不同值,则返回行的另一种方法

时间:2014-02-27 17:02:38

标签: tsql

是否有其他方法可以通过连接两个表来返回相同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列。

我是否可以使用其他任何陈述而不是枚举where codition中的每一列?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 
相关问题