複数のテーブルを作成し、それらのデータを1つにマージしています。これらのテーブルには、類似した列col1とcol2がありますが、これらの列の値は異なる場合があります。tab1の行1のcol1は「0」であり、tab2のcol1はcol1「1」の同じ行にある可能性があります。この場合のみ、行1のcol1のtab1から値を更新する必要があります。次の例を見てください。
BEFORE MERGING
tab1:
id col1 col2
1 0 0
2 0 1
3 0 0
AFTER MERGING WITH tab2
tab2: tab1:
id col1 col2 id col1 col2
1 1 0 ---> 1 1 0
2 0 0 2 0 1
3 0 0 3 0 0
そのために、次のクエリを使用します。
merge into tab1 st
using (select id, col1, col2 from tab2) ss
ON (st.id=ss.id)
when matched then
update set st.col1 = ss.col1,
st.col2 = ss.col2
where ss.col1 != 0 or ss.col2 != 0
when not matched then
insert (st.id, st.col1, st.col2)
values (ss.id, ss.col1, ss.col2)
;
私はSQLを学んでいるだけなので、このクエリが正しくないことに気づきました。tab1の「1」の値をtab2の「0」で上書きできます。このクエリを改善するのを手伝ってください、私は立ち往生しています。