我有一张超过五十行和四列的表。
列可以称为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进行此操作?
答案 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;
然后,您可以将结果放入新表中。