【问题标题】:oracle sql column mapping with separate dictionary table in selectoracle sql列映射与选择中的单独字典表
【发布时间】:2016-03-31 12:57:28
【问题描述】:

我有一个包含许多连接的大型选择查询。基于 user_id 的主表和字典表之间存在某种关系。我不需要将字典表与主查询连接起来。我们可以在这种情况下使用 CASE 吗?其他解决方案是什么?我们如何使用单独的字典表在 select 语句中使用其列 user_name 而不是主表的 user_id?我需要在 select 语句中使用 user_name,而不在 join 语句中添加它,如下所示

main_table - user_id 字典 - user_id, user_name

所需内容示例:

  select 
    mt.some_field,
    dictionary.user_name
    --(select user_name from dictionary d, main_table mt where d.user_id=mt.user_id --) user_name
..
..
    from main_table mt
    *
    *
    join tab1 t1 on t1.id1=mt.id1
    join tab2 t2 on t2.id2=mt.id2
    join tab3 t3 on t3.id3=mt.id3
    *
    group by mt.some_field,..,..

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    是的,您可以使用它。但是有一些限制,查询应该只返回一个值。如果 user_id 是唯一键或主键,则可以在 select 子句中添加它。它被称为标量子查询。

    select d.user_name from dictionary d where d.user_id = mt.user_id
    

    标量子查询无需再次加入。

    【讨论】:

    • user_id 是主键,但使用该表达式作为子查询会返回 ORA-01427
    • 你能粘贴查询吗?
    • 只有当字典有多个相同用户ID的记录时才会发生
    猜你喜欢
    • 1970-01-01
    • 2020-03-15
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多