SQL Server过程-合并两个没有重复的表-如果表B列B = 1,则

时间:2020-09-28 20:19:30

标签: sql sql-server subquery left-join

我正在尝试在SQL中合并两个没有重复的表。如果值= 1,则需要选择表B列B的值。表A是一个包含默认值的列表框,表B是每个用户的列表框值。

表A

Col_A  Col_B
------------
701     null
702     null
703     null
704     null

表B

Col_A  Col_B
-------------
701    1
703    1

所需结果

Col_A  Col_B
-------------
701    1
702    null
703    1
704    null

1 个答案:

答案 0 :(得分:0)

您要一个 left join吗?

select a.col_a, b.col_b
from table_a a
left join table_b b on b.col_a = a.col_a

如果值== 1,我需要选择表B列B的值

在示例数据中,表b中的所有行都具有值1。如果您确实也想根据该值进行过滤,请向left join添加另一个条件:

select a.col_a, b.col_b
from table_a a
left join table_b b on b.col_a = a.col_a and b.col_b = 1

仅使用这两列,这似乎并不十分有用。如果您只想知道表b中是否存在具有相同col_a和值为1某行,那么exists更合适:

select a.col_a,
    case when exists (select 1 from tableb b where b.col_a = a.col_a and b.col_b = 1)
        then 1
    end as col_b
from table_a a