首页 > 解决方案 > 与内连接合并

问题描述

我正在尝试合并一个内部连接,以便我可以使用 3 个不同的表,其中 TBL1 是要插入记录的目标表,TBL2 是要在表 1 TBL1 中插入的所有记录,第三个也是最后一个表 TBL3 在哪里rfc 会产生一个条件,如果 tbl3.rfc = tbl2.rfc 将数据加载到 TBL1。我正在做的查询如下:

   MERGE INTO   TBL1 concent
        USING  (SELECT  inter.rfc,
                        arch.name_contr, arch.rfc,arch.taxpayer_situation, 
                        arch.oficio_global,arch.presumed_publication,arch.definitive_publication
        FROM TBL2 arch
        INNER JOIN  TBL3 inter 
              ON inter.rfc = arch.rfc )
        ON (concent.rfc = arch.rfc) WHEN MATCHED THEN UPDATE SET concent.name_contr = arch.name_contr, concent.taxpayer_situation = arch.taxpayer_situation, concent..oficio_global = arch.oficio_global, concent.presumed_publication = arch.presumed_publication, concent.definitive_publication = arch.definitive_publication, concent.id_arch = arch.id_arch WHEN NOT MATCHED THEN INSERT (concent.id_concent,concent.id_arch,conce.snapshot_date,concent.rfc,concent.name_contr,
            concent.taxpayer_situation,concent.oficio_global,concent.presumed_publication,
            concent.definitive_publication,concent.baja_logica,concent.last_update) VALUES (arch.id_arch, arch.id_arch,'04/05/2021',arch.rfc,arch.name_contr,
            arch.taxpayer_situation,arch.oficio_global,arch.presumed_publication,
            archi.definitive_publication,'01','05/05/2021');

它标记的错误是:命令行错误:8 列:27 错误报告 - 错误 SQL:ORA-00904:“ARCH”。“RFC”:无效标识符 00904。00000 -“%s:无效标识符” *原因:*操作:

数据库

标签: databaseoraclemergeinner-join

解决方案


表别名的范围arch仅限inter于该子查询。如果要在 parent 级别指定该子查询的列,则merge需要为该子查询 inusing子句提供别名,例如v_using

MERGE INTO   TBL1 concent
        USING  (SELECT  inter.rfc as inter_rfc
                        arch.name_contr, arch.rfc,arch.taxpayer_situation, 
                        arch.oficio_global,arch.presumed_publication,arch.definitive_publication
        FROM TBL2 arch
        INNER JOIN  TBL3 inter 
              ON inter.rfc = arch.rfc ) v_using
        ON (concent.rfc = v_using.rfc) WHEN MATCHED THEN UPDATE SET concent.name_contr = v_using.name_contr, concent.taxpayer_situation = v_using.taxpayer_situation,...

推荐阅读