比较两个表并过滤结果

时间:2015-01-09 12:01:08

标签: sql compare

我正在尝试在两个表之间进行比较,然后返回孤立记录。我的意思是将CustomerA与CustomerB进行比较,排除任何匹配,并返回所有不匹配的记录。我有以下内容:

CustomerA | CustomerB

在CustomerA表中,我有以下列:

|Name        | PostCode     |

在CustomerB表中,我有以下一栏:

| PostCode     |

我正在尝试匹配CustomerA'使用CustomerB Tables的表Postcode列,我已按如下方式执行:

select postcode from TestDB.dbo.customerA
except
select postcode from TestDB.dbo.customerB

但是,我只是在上面的查询之后将Postcode作为返回的结果而没有名称:

| PostCode     | 
| A32 245      | 
| B44 345      | 
| C54 342      |

我也需要那里的名字。例如:

|Name       | PostCode     | 
|James      | A32 245      | 
|Roger      | B44 345      | 
|Smith      | C54 342      |

同时,是否可以按名称过滤返回的结果?例如,在比较之后,我是否可以进一步向下钻取并获取所有名为' James'?

的孤儿记录

刚刚开始使用SQL查询,所以会欣赏任何方向。

2 个答案:

答案 0 :(得分:2)

我认为您需要来自CustomerA的所有记录,其中邮政编码在CustomerB中不匹配。这可以这样做:

SELECT *
FROM CustomerA
WHERE PostCode NOT IN
  (SELECT PostCode FROM CustomerB);

获得特定客户:

SELECT *
FROM CustomerA
WHERE PostCode NOT IN
  (SELECT PostCode FROM CustomerB)
AND Name = 'James';

答案 1 :(得分:0)

您应该只比较所谓的主键,这是一个标识每个人的属性,并且始终是唯一的。例如,它可以是DNI。是的,您可以使用SELECT查询过滤结果

Select * from table where user = 'name';