sql - 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
我已经尝试过左连接,但仍然没有得到预期的结果。
解决方案
您似乎想要除两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。
推荐阅读
- vba - Excel中的任务计划程序任务状态
- c++ - Win32 透明全屏仅在窗口大小溢出桌面时才有效
- angular - 调用 .next() 后,Angular Observable 不会在视图中更新
- angularjs - 如何在angularjs和angular(2-7)应用程序之间共享数据或事件
- c++ - 不能不移动就从函数返回 std::unique_ptr
- java - 我的输出是 Null 而不是使用字符串的默认值
- asp.net-mvc - 使用 Actionlink 上的资源文件切换语言单击而不刷新页面内容
- javascript - 动态 iframe 中的表单提交不会被触发
- jupyter-notebook - 为什么我无法创建同时安装了 Jupyter 和 DataLab 的 Google DataProc 集群?
- java - 矩形精灵的简单动画