我正在尝试在两个表之间进行比较,然后返回孤立记录。我的意思是将客户 A 与客户 B 进行比较,排除任何匹配项,并返回所有不匹配的记录。我有以下几点:
CustomerA | CustomerB
在客户 A 表中,我有以下列:
|Name | PostCode |
在客户 B 表中,我有以下列:
| PostCode |
我正在尝试将客户 A 表邮政编码列与客户 B 表匹配,我已完成如下操作:
select postcode from TestDB.dbo.customerA
except
select postcode from TestDB.dbo.customerB
但是,我只在上述查询后将邮政编码作为返回的结果,而没有名称:
| PostCode |
| A32 245 |
| B44 345 |
| C54 342 |
我也需要那里的名字。例如:
|Name | PostCode |
|James | A32 245 |
|Roger | B44 345 |
|Smith | C54 342 |
同时,是否可以按名称过滤返回的结果?例如,在比较之后,我是否可以进一步向下钻取并获取名称为"James"的所有孤立记录?
刚开始SQL查询,所以将不胜感激任何方向。
我认为您想要来自客户 A 的所有记录,其中邮政编码在客户 B 中不匹配。这可以像这样完成:
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';
您应该只比较所谓的主键,主键是标识每个人并且始终唯一的属性。例如,它可以是 DNI。是的,您可以使用 SELECT 查询筛选结果
Select * from table where user = 'name';