如何在SQL中将两张表的列数据映射生成第三张表?
两表字段映射生成结果表SQL实现
映射逻辑说明
需求本质是将表A每行存储的两个关联键,分别匹配表B中存储的键值映射关系,替换为对应的值后输出结果:
- 表A的
col1字段值,匹配表Bcol1的键,取表B对应col2作为结果表的col1 - 表A的
col2字段值,匹配表Bcol1的键,取表B对应col2作为结果表的col2
实现代码
因为需要对同一行的两个字段分别做映射,需要将表B和表A做两次关联查询,SQL如下:
SELECT b1.col2 AS col1, b2.col2 AS col2 FROM table_a a INNER JOIN table_b b1 ON a.col1 = b1.col1 INNER JOIN table_b b2 ON a.col2 = b2.col1;
结果验证
用题目给出的示例数据执行上述SQL:
- 表A第一行
(a,b):第一次关联取到a对应的值e,第二次关联取到b对应的值f,输出行(e,f) - 表A第二行
(c,d):第一次关联取到c对应的值g,第二次关联取到d对应的值h,输出行(g,h)
完全符合预期结果。
注:如果存在表A的键在表B中无匹配映射、但仍需要保留该行的场景,可以将
INNER JOIN替换为LEFT JOIN,无匹配的位置会返回NULL。
内容的提问来源于stack exchange,提问作者and_ayush
相关产品推荐
相关产品推荐

