从不匹配的同一表中选择数据

时间:2013-12-06 18:15:15

标签: sql tsql self-join

我已经为我的问题找到了几种解决方案,但是在我的情况下我无法应用它。

基本上我有一张车辆表:

License     VIN     Region
1           1       1
1           2       2
2           3       1
2           3       2
3           4       1
3           4       2
3           5       3

我想从区域1获取许可证和vin,并根据许可证查看vin是否在所有其他区域匹配。如果不是,我想要所有不匹配的行,但如果它匹配,我不想要该行。因此,当我说有3个许可证且区域1匹配一行而不是另一个时,确实会出现复杂性,我希望两者都是不匹配的,区域1;但是,当我有3个全部匹配的许可证时,我不想要任何行,包括区域1。

所以我在这种情况下的结果将是:

License     VIN     Region
1           1       1
1           2       2
3           4       1
3           5       3

我正在使用SQL Server 2005。

1 个答案:

答案 0 :(得分:2)

我认为这就是你要找的东西

SELECT DISTINCT a.* 
FROM Vehicle AS a
INNER JOIN Vehicle AS b
ON a.License = b.License
WHERE a.VIN != b.VIN 
AND a.Region != b.Region 
AND (a.Region = 1 OR b.Region = 1)