我正在尝试在两个表之间进行比较,然后返回孤立记录。我的意思是将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查询,所以会欣赏任何方向。
答案 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';