当在另一个表中找到关联值时,Oracle 在列中设置值

Posted

技术标签:

【中文标题】当在另一个表中找到关联值时,Oracle 在列中设置值【英文标题】:Oracle set value in column when associated value is found in another table 【发布时间】:2020-09-08 20:16:06 【问题描述】:

我有两张桌子 - 推荐和破产。

推荐

Referralno | bk_filed
----------------------
123        |
456        |
789        |

破产

Referralno 
----------
875
123
789

如果两个表中的参考编号都匹配,我想用“Y”填充 bk_filed 列。结果应该是这样的。

Referralno | bk_filed
----------------------
123        | Y
456        |
789        | Y

我尝试了以下合并语句,但无法正常工作。

merge into LCTS.referrals r
using LCTS.bankruptcy b
on (r.referralno = b.referralno )
when matched then update
set r.bk_filed = "Y"

【问题讨论】:

【参考方案1】:

您可以将其编写为update 语句,使用exists 和相关子查询进行过滤:

update referrals r
set bk_filed = 'Y'
where exists (select 1 from bankruptancy b wehre b.referralno = r.referralno)

【讨论】:

以上是关于当在另一个表中找到关联值时,Oracle 在列中设置值的主要内容,如果未能解决你的问题,请参考以下文章

如何通过在两个表中映射不同的键并在列值上隐含一些逻辑来创建关联

Oracle SQL 或 PL/SQL:如何仅在上升趋势或下降趋势结束时识别烛台形态并在列中设置标志?

BigQuery UDF 在另一个表中查找最大值

oracle 11.2.0.1.0 和 oracle 11.2.0.2.0 在使用序列向表中插入值时的差异

求oracle中查询关联查询不同数据在另一表作为相同字段的对应的值

如何在 oracle apex 中验证两个选择列表