与内部连接合并
Merge with inner join
我正在尝试合并内部联接,以便我可以使用 3 个不同的 table,
其中 TBL1 是将插入记录的目标 table,
TBL2 其中要插入的所有记录 table 1 TBL1 live
第三个也是最后一个 table TBL3,其中条件将由 rfc 制定,
其中 if 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:无效标识符”*原因:
*动作:
数据库
table 别名 arch
和 inter
的范围仅限于该子查询。如果要在父 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,...
我正在尝试合并内部联接,以便我可以使用 3 个不同的 table, 其中 TBL1 是将插入记录的目标 table, TBL2 其中要插入的所有记录 table 1 TBL1 live 第三个也是最后一个 table TBL3,其中条件将由 rfc 制定, 其中 if 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:无效标识符”*原因: *动作:
数据库
table 别名 arch
和 inter
的范围仅限于该子查询。如果要在父 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,...