连接两个表时需要针对多个条件的真假答案

时间:2019-04-18 10:04:40

标签: tsql

我有两个表,一个是关于sampleid的信息(sample id是主键),另一个是sampleid所具有的条件(sampleid不是主键在此表中,因为它可能有多个条件)。我想知道我的sampleid是否有特定条件(是/否),但不确定如何在不获取返回样本行多行的查询的情况下加入它们。

例如

sampleid    colour
-----------------------
1       blue
2       red
3       green

sampleid    condition
-----------------------
1       23
1       81
1       94
2       81
2       94
3       23

我想询问样本是否具有条件23并返回:

sampleid    colour      condition23
----------------------------------------------
1       blue        Y
2       red         N
3       green       Y

希望这很清楚,每次加入他们时,我都会得到多个sampleid-我是新手,并试图找到自己的路!

预先感谢 F

3 个答案:

答案 0 :(得分:1)

这可以使用left joincase这样的东西来完成:

Page findBySlugAndIdNot(String slug,Long id)

答案 1 :(得分:0)

尝试此查询:

select s.*, case when c.condition is null then 'N' else 'Y' end condition23
from samples s
left join 
(select * from conditions where condition = 23) c on s.sampleid = c.sampleid

答案 2 :(得分:0)

具有EXISTS:

select 
  s.*,
  case 
    when exists (
      select 1 from conditions where sampleid = s.sampleid and condition = 23
    ) then 'Y' 
    else 'N'
  end condition23
from samples s