Oracle使用MERGE关联c_file表校验填充e_details表实现咨询
符合要求的Oracle MERGE实现
只需调整MERGE语句的USING数据源部分,将 staging 表和 c_file 表左关联提前计算出合规的ac_ec值即可,兼容SQL Developer 20.4配套的Oracle数据库版本:
MERGE INTO e_details m USING ( SELECT s.e_id, NVL(c.ac_ec, 'E') AS ac_ec FROM e_staging s LEFT JOIN c_file c ON s.e_id = c.e_id ) s ON (m.e_id = s.e_id) WHEN MATCHED THEN UPDATE SET m.ac_ec = s.ac_ec WHEN NOT MATCHED THEN INSERT (e_id, ac_ec) VALUES (s.e_id, s.ac_ec);
逻辑说明
- 左关联保证
e_staging表的全量数据都被保留,不会漏同步 NVL(c.ac_ec, 'E')自动匹配取值规则:如果e_id同时存在于c_file和e_staging表,取c_file对应的ac_ec值;如果仅存在于e_staging表,返回固定值'E',完全符合需求- 执行后e_details表中e_id 1~5的ac_ec值会和c_file一致,e_id 6~10的ac_ec值为'E',和示例结果完全匹配
内容的提问来源于stack exchange,提问作者Vicky
相关产品推荐
相关产品推荐

