sql - Sql select - 如果为空,如何从其他表中选择
问题描述
我有一个视图,它为 b.emissor 和 B.indexador 列返回了一些空值。如果为空,我需要先在表 TB_CAD_RF 中找到这个值,如果仍然为空,我需要查询 TB_CAD_RF_2。我尝试下面的逻辑,但它不起作用。还试图用案例陈述思考一些事情,但无法弄清楚。
任何人都可以帮助我吗?
select A.NM_ATIVO, B.EMISSOR, B.INDEXADOR from VW_POSICAO as A
LEFT JOIN
TB_CAD_RF B on A.NM_ATIVO = B.CODIGO
where a.NM_EMISSOR is null
as C LEFT JOIN (
select C.EMISSOR, C.INDEXADOR from TB_CAD_RF_2 as D ON B.NM_ATIVO = C.CODIGO where C.EMISSOR is null)
解决方案
这种模式:
SELECT
COALESCE( first.choice, second.choice, third.choice) as a
FROM
first
LEFT JOIN second on first.id = second.id
LEFT JOIN third on second.id = third.id
Coalesce 返回第一个传入的非空值,从左到右扫描
推荐阅读
- python - Matplotlib 直方图未在 y 轴上显示概率密度
- php - Laravel 5:获取评论
- lisp - 球拍中的单身人士(LISP)
- mysql - 有没有办法在领域对象数据库与 mariadb 之间同步?
- amazon-s3 - 如果找不到环境变量,如何从文件中回退到凭据?
- django - Django 在排序的查询集中注释 x 的第一次出现
- reactjs - react-router:如何从基本名称导航到父路由
- mysql - 为什么即使启用了 MySQL 查询缓存也没有使用?
- swift - 更新到 Xcode 11 后,CGAffineTransform 翻译在标签栏上不起作用
- python-3.x - ValueError:发现样本数量不一致的输入变量:[755, 8]