我试图比较来自相同ID的两个地址,看看它们是否匹配.例如:
Id Adress Code Address 1 1 123 Main 1 2 123 Main 2 1 456 Wall 2 2 456 Wall 3 1 789 Right 3 2 100 Left
我只想弄清楚每个ID的地址是否匹配.所以在这种情况下,我想只返回ID 3作为地址代码1和2的不同地址.
解决方法
加入表格并给它两个不同的别名(A和B).这允许比较同一表的不同行.
SELECT DISTINCT A.Id FROM Address A INNER JOIN Address B ON A.Id = B.Id AND A.[Adress Code] < B.[Adress Code] WHERE A.Address <> B.Address
“小于”比较<确保您获得2个不同的地址,并且您没有两次获得相同的2个地址代码.使用“不相等”<>相反,会产生代码为(1,2)和(2,1);其中每一个依次为A别名和B别名.
join子句负责行的配对,其中where子句测试附加条件.
更新:
上述查询适用于任何地址代码.如果要将地址与特定地址代码进行比较,可以将查询更改为
SELECT A.Id FROM Address A INNER JOIN Address B ON A.Id = B.Id WHERE A.[Adress Code] = 1 AND B.[Adress Code] = 2 AND A.Address <> B.Address