连接同一个表的两列并比较结果

时间:2018-02-19 14:58:25

标签: sql sql-server

我有表CSBaumkontakt,这是一个例外情况:

select rootpubindex
from csbaumkontakt
where dadpubindex = '2143640C-3ABF-440C-B094-2128F4495874'

结果rootpubindex = F7BC36A0-AD4F-49D5-B4FC-AD529C7EA738

select rootpubindex, dadpubindex
from csbaumkontakt
where relpubindex = '2143640C-3ABF-440C-B094-2128F4495874'

结果rootpubindex = D66035CB-B7AD-4D54-9FC7-AE6E7F32662Ddadpubindex = D66035CB-B7AD-4D54-9FC7-AE6E7F32662D

第一个查询的

Dadpubindex是第二个查询的relpubindex

现在我想知道第二个查询中的rootpubindex = D66035CB-B7AD-4D54-9FC7-AE6E7F32662Ddadpubindex = D66035CB-B7AD-4D54-9FC7-AE6E7F32662D是否与rootpubindex = {{1从第一个查询。因此在这个例子中没有。如果表中的每一行都有相同或不同的查询,我能看到这个吗?

2 个答案:

答案 0 :(得分:1)

似乎您正在寻找两列中具有相同值的行

select rootpubindex 
     , dadpubindex 
from csbaumkontakt 
where dadpubindex = relpubindex

用于查看匹配结果

select rootpubindex 
     , dadpubindex 
     , adpubindex = relpubindex  /* 0 = not equal, 1 = equal */
from csbaumkontakt 

答案 1 :(得分:1)

您想知道是否存在与相关记录rel.relpubindex = main.dadpubindexrootpubindex匹配主记录dadpubindex的相关记录(rootpubindex) }。请使用EXISTS

select
  dadpubindex,
  rootpubindex,
  case when exists 
  (
    select * 
    from csbaumkontakt rel 
    where rel.relpubindex  = main.dadpubindex
      and rel.rootpubindex = main.rootpubindex
      and rel.dadpubindex  = main.rootpubindex
  ) then 'yes' else 'no' end as match_exists
from csbaumkontakt main;