首页 > 解决方案 > Sql想要从表中获取匹配以及新记录

问题描述

我是 SQL 查询的新手,我有表:

表 1

Id  | Flag
----+------
200 | 1
201 | 1
202 | 1
203 | 1
204 | 1

表2

Id  | Flag
----+------
200 | 0
203 | 1

我想要这样的结果:

Id  | Flag
----+------
200 | 0
201 | 1
202 | 1
204 | 1

我已经尝试过左连接,但仍然没有得到预期的结果。

标签: sql

解决方案


您似乎想要除两flag列中都带有“1”的行之外的所有行。然后,如果可用,您希望在table2.

如果这是一个正确的解释:

select t1.id, coalesce(t2.flag, t1.flag)
from table1 t1 left join
     table2 t2
     on t1.id = t2.id
where t1.flag <> 1 or
      (t2.flag is null or t2.flag <> 1)

是一个 db<>fiddle。


推荐阅读