将数据从一个表复制到所有外键的新表

时间:2015-11-22 03:14:32

标签: sql oracle plsql

我有一张超过五十行和四列的表。

列可以称为col1,col2,col3和col4。

此主表中的每一列都是varchar2,并且存在冗余数据。

我正在转换此表,而不是使用所有外键。因此,我为每列创建了4个表。 Col1_Table,Col2_Table,Col3_Table和Col4_Table。最后是一个新的主表,它与原始主表类似,只是代替varchar2s。我正在使用数字并创建了外键约束。

表格如下:

--OriginalMasterTable

Col1 VarChar2

Col2 VarChar2

Col3 VarChar2

Col4 VarChar2




--Col1_Table, Col2_Table, Col3_Table, Col4_Table

ID - Number

Name - VarChar2

--NewMasterTable

Col1_ID Number

Col2_ID Number

Col3_ID Number

Col4_ID Number

col1,2,3和4表格包含原始主表格中包含新ID的原始数据。

我想将原始主表复制到新的主表中,而是使用col1,2,3和4表中的外键复制。

我将如何使用SQL或PL / SQL进行此操作?

1 个答案:

答案 0 :(得分:2)

您可以使用连接,但在字符字段上。假设定义了所有字段,那么您可以使用内部联接:

select c1.id as col1_id, c2.id as col2_id, c3.id as col3_id, c4.id as col4_id
from originalmastertable omt join
     col1_table c1
     on omt.col1 = c1.name join
     col2_table c2
     on omt.col2 = c2.name join
     col3_table c3
     on omt_col3 = c3.name join
     col4_rable c4
     on omt_col4 = c4.name;

然后,您可以将结果放入新表中。