获取不匹配的记录Sql Server表

时间:2018-02-18 12:22:59

标签: sql sql-server

一个是Demand表,另一个表是VarientCountry我只想要来自需求表的变量,在varientcountry表中没有国家映射

需求表

Id Varient Country
1     v1       India
2     v2       NULL
3     v3       Nepal
4     v4       Japan

VarientCountry Table

Id Varient Country
1    v1       India
2    v1       Uk
3    v2       China
4    v1       Indonisia
5    v3       Nepal
6    v4       Egland
7    v4       Null

我想要像

那样的例外结果
Id Varient Country
1     v1       UK
3     v2       China
6     v4       England

2 个答案:

答案 0 :(得分:2)

如果没有ID,你可以使用except

select Varient, Country
from VarientCountry
except
select varient, country
from demand;

如果您需要ID,我会选择not exists

select vc.*
from varientcountry vc
where not exists (select 1
                  from demand d
                  where d.varient = vc.varient and
                        (d.country = vc.country or d.country is null and vc.country is null)
                 );

答案 1 :(得分:1)

您必须使用except一个。

您必须从demand表中的exceptvarientCountry记录中选择记录。这是正确的。

   select varient, Country
    from demand
    except
    select varient, country
    from varientCountry;

您将获得以下输出

Id Varient Country
1     v2       Null
2     v4       Japan