请教:通过参考表替换列值并将Table1数据迁移至Table2的SQL语句
SQL Solution for Data Migration with Reference Lookup
需求回顾
我们需要把Table1中的数据迁移到结构完全一致的Table2,同时借助reference参考表,将action、component、type列的数值替换为对应的文本描述,最终得到目标格式的数据。
实现SQL语句
-- 可选:若需要清空Table2原有数据,执行此步骤;保留原有数据则跳过 TRUNCATE TABLE Table2; -- 插入转换后的数据到Table2 INSERT INTO Table2 (action, component, type) SELECT ref_action.value AS action, ref_component.value AS component, ref_type.value AS type FROM Table1 -- 关联reference表获取action对应的描述文本 LEFT JOIN reference ref_action ON ref_action.description = 'action' AND ref_action.id = Table1.action -- 关联reference表获取component对应的描述文本 LEFT JOIN reference ref_component ON ref_component.description = 'component' AND ref_component.id = Table1.component -- 关联reference表获取type对应的描述文本 LEFT JOIN reference ref_type ON ref_type.description = 'type' AND ref_type.id = Table1.type;
逻辑说明
- 三次
LEFT JOIN分别对应三个需要转换的列,每次关联都会匹配reference表中description与列名一致、id与原表数值一致的记录,取出对应的文本值; - 用
TRUNCATE TABLE是为了确保Table2插入新数据前为空,如果你需要保留原有数据,可以去掉这一步,或者调整为增量插入的逻辑; - 使用
LEFT JOIN可以保证即使Table1中存在reference表未匹配到的数值,这条数据依然会被插入(对应列显示NULL),如果要求必须有匹配项才能插入,可替换为INNER JOIN。
内容的提问来源于stack exchange,提问作者CodingOwl
相关产品推荐
相关产品推荐

