sql - 仅当所有匹配条件都失败时才更新标志
问题描述
我正在尝试在 oracle 中编写查询以仅根据以下情况更新标志:
设想 :
一个 mctn_id 与多个 PRPR_ID 链接,每个 PRPR_ID 可以有不同的地址,如果所有PRPR_ID 地址不属于配置表地址,我需要将表中的标志更新为 N。如果其中任何一个属于配置表地址,则不应将标志更新为 N。
在这种情况下,我使用的是不存在的,它不起作用。
update prcb_enroll_tbl
set prov_flg ='N',
sys_insert_dtm = systimestamp
where tin_number in (select mctn_id
from cc_pr_prov prpr
inner join cc_pr_addr prad
on prpr.prpr_id = prad.prad_id
and not exists (select 1
from fsg_prcb_config config
where prad.prad_addr1 = config.config_value)
即使只有一个地址属于配置表,上述查询正在更新一个标志,这不是预期的结果。
解决方案
这应该像not exists
. 这是做你想做的吗?
update prcb_enroll_tbl pe
set prov_flg ='N', sys_insert_dtm = systimestamp
where not exists (
select 1
from cc_pr_prov pr
inner join cc_pr_addr pa on pr.prpr_id = pz.prad_id
inner join fsg_prcb_config pc on pc.config_value = pa.prad_addr1
where ??.mctn_id = pe.tin_number
)
不清楚哪个表列mctn_id
来自,所以我使用???
:你应该用正确的表别名替换它。
推荐阅读
- reactjs - 创建行为异常加载环境变量的 React App
- elasticsearch - Garbage in Garbage out 处理策略
- flutter - 颤振设置状态,如 instagram 帖子
- sql - 尽管函数定义中有 RETURN 语句,但 Postgres 查询没有结果数据的目的地
- if-statement - Makefile:根据安装的内容选择值
- javascript - 如何模拟波动方程
- ffmpeg - FFmpeg 命令行参数跳过视频中的第 n 帧而不读取 0..(n-1)
- dpkg - 突触报告已安装软件包的计数不正确?
- python - 气流错误构建一个 dag
- python - 如何显示特别选择的团队的结果?