SQL-检查是否在另一个表中找到唯一值

时间:2019-03-26 09:00:22

标签: sql sql-server tsql azure-sql-database

我有一个基本表,其中有100万个客户编号,只有一列。现在,如果要在另一个特定的表中找到客户,我想添加第二个列,其值为'1'和'0'。

基本表:

select relationNr
from Relation

第二张表:

select relationNr
from Contract
where startdate < '01-01-2019'
    and enddate is null
    and type = 'donor'

我希望有两列,第一列具有所有的关联号,第二列具有1或0(视是否存在于第二张表中而定)。

2 个答案:

答案 0 :(得分:0)

您可以为此使用外部联接:

select r.relationnr, 
       case 
          when c.relationnr is not null then 1
          else 0
        end as is_present
from relation r
  left join (
    select relationNr
    from Contract
    where startdate < '01-01-2019'
      and enddate is null
      and type = 'donor' 
  ) c on c.relationnr = r.relationnr;

答案 1 :(得分:0)

使用 LEFT JOIN 获得效果:

SELECT
    relationNr
    ,IIF(c.relationnr IS NOT NULL,1,0) is_present
FROM
    Relation r
    LEFT JOIN Contract c ON r.relationnr = c.relationnr
        AND c.startdate < '01-01-2019'
        AND c.enddate is null
        AND c.type = 'donor'