SQL-有条件地拆分容器行

SQL-有条件地拆分容器行,sql,oracle,Sql,Oracle,在迁移容器的过程中,如果我们有两个表 表映射(旧值、新值) TABLE_使用(值、数据…) TABLE\u USING引用(FK)不相关表中的容器。 表映射临时用于迁移,目标是将内容从不推荐的容器移动到新容器 这里的问题是,有时容器不仅被替换,而且被拆分为多个新容器,例如表\u映射可能包含: 旧价值 新价值 1. 10 1. 11 2. 20 你需要两个步骤。下面我首先插入所有新行,然后删除所有旧行 -- insert rows with new values insert into table

在迁移容器的过程中,如果我们有两个表

  • 表映射(旧值、新值)
  • TABLE_使用(值、数据…)
  • TABLE\u USING
    引用(FK)不相关表中的容器。
    表映射
    临时用于迁移,目标是将内容从不推荐的容器移动到新容器

    这里的问题是,有时容器不仅被替换,而且被拆分为多个新容器,例如
    表\u映射
    可能包含:

    旧价值 新价值 1. 10 1. 11 2. 20
    你需要两个步骤。下面我首先插入所有新行,然后删除所有旧行

    -- insert rows with new values
    insert into table_using (value, data ...)
    select m.new_value, u.data ...
    from table_using u
    join table_mapping m on m.old_value = u.value;
    
    -- delete rows with old values
    delete from table_using where value in (select old_value from table_mapping);
    
    -- commit the transaction
    commit;
    

    请提供示例数据和所需结果。@GordonLinoff我在编辑中格式化了一个示例