【问题标题】:Merge with inner join与内连接合并
【发布时间】:2021-07-29 09:02:50
【问题描述】:

我正在尝试合并一个内部联接,以便可以使用 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:无效标识符” *原因: *行动:

数据库

【问题讨论】:

    标签: database oracle merge inner-join


    【解决方案1】:

    表别名archinter 的范围仅限于该子查询。如果要在父merge 级别上指定该子查询的列,则需要在using 子句中为该子查询提供别名,例如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,...
    

    【讨论】:

      猜你喜欢
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 2013-01-27
      • 2012-12-17
      • 2010-09-29
      • 1970-01-01
      相关资源
      最近更新 更多