gpt4 book ai didi

sql - 仅当目标表不为空时才更新目标表

转载 作者:行者123 更新时间:2023-12-02 08:39:49 26 4
gpt4 key购买 nike

我有一个场景,我们想要更新 oracle 表中的 40 列。 source 是另一个 oracle 表。

  1. 如果列的值为 null,他们想忽略该列的值!

例子:

col1 col2 col3 
1 null b
2 null 3

目标表:

col1 col2 col3
1 a null
2 b null

更新后

col1 col2 col3
1 a b
2 b 3

注意:只有当它不为空时我们才需要更新..

感谢任何建议。

最佳答案

update target_table tt
set (col1, col2, col3) = ( select nvl(st.col1,tt.col1),
nvl(st.col2,tt.col2),
nvl(st.col3,tt.col3)
from source_table st where st.primary_key = tt.primary_key )
where exists ( select null
from source_table st
where st.primary_key = tt.primary_key
and (st.col1 is not null
or st.col2 is not null
or st.col3 is not null) );

显然,您必须确定主键是什么。我仅将“primary_key”用作指导性指南。

关于sql - 仅当目标表不为空时才更新目标表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com