从数据库中选择不匹配的列值

时间:2015-08-31 21:04:35

标签: sql-server sql-server-2008

我想选择并获取具有相同列名的两个表的所有不匹配值但是Id,Name和City是不同的。我正在使用Sql Server Management Studio

表A:

id   Name   City

1    John   karachi

2    smith  Capetown

3     liza   Washington        

表B:

id   Name   City

7    Grey   Dubai

8    Clarke  Texas

9     liza   Washington

输出:

7    Grey   Dubai

8    Clarke  Texas

2 个答案:

答案 0 :(得分:1)

已经回答了数百次。不太确定你的意思是“拥有相同的列名,但Id,Name和City是不同的”,但这里有几个例子说明你可以做到这一点。

您可以使用tablea为null的左连接,

select b.Name
    , b.City
from tableb b 
left join tablea a on a.name = b.name 
    and a.city = b.city
where a.name is null

你可以使用except。

select Name
    , City
from tableb
except
select Name
    , City
from tablea

答案 1 :(得分:0)

您可以尝试以下查询。假设id列永远不会null

select tb.* 
from tableB tb 
left join tableA ta 
on tb.Name=ta.Name and tb.City=ta.City
where ta.id is NULL

链接到demo sql fiddle:http://sqlfiddle.com/#!3/250e5/1