Oracle中如何将查询生成的code列与其他表关联查询
Oracle生成列关联names表获取code_name的实现方法
你可以通过两种方式实现需求,以下是具体示例:
方法一:子查询+LEFT JOIN(推荐,适合后续维护)
将原生成code列的查询作为子查询,与names表通过code字段左关联,这样即使原查询中code为空,也能保留table_code的原始数据:
select t.code, n.code_name from ( select (case when field='A' then '001' when field='B' then '002' end) code from table_code ) t left join names n on t.code = n.code;
方法二:CASE WHEN直接映射(适合数据固定且少量的场景)
如果names表的数据不会变动,也可以直接在CASE WHEN里返回对应的code_name,无需关联表:
select (case when field='A' then '001' when field='B' then '002' end) code, (case when field='A' then 'aa' when field='B' then 'bb' end) code_name from table_code;
注:方法一更灵活,当names表的code或code_name有变更时,无需修改查询语句,只需更新names表数据即可。
内容的提问来源于stack exchange,提问作者Tasbin Islam
相关产品推荐
相关产品推荐

