【问题标题】:How to join table with selective duplicate records? (oracle10g)如何连接具有选择性重复记录的表? (oracle10g)
【发布时间】:2016-06-29 05:13:03
【问题描述】:

如何为以下要求创建 ORACLE 查询?

问题是如果某些SQL结果中存在相同的ID,我怎样才能获得Name不为空或NULL的那个ID的记录。

模式(1) SQL1 => RESULT1 => ID 名称 ----- ------ 001 002 003

SQL2 => RESULT2 => ID 名称 ----- ------ 003 名字1

SQL3 => RESULT3 => ID 名称 ----- ------ 003 名称2

模式(2) SQL1 => RESULT1 => ID 名称 ----- ------ 001 002 003 名称1

SQL2 => RESULT2 => ID 名称 ----- ------ 003

SQL3 => RESULT3 => ID 名称 ----- ------ 003 名称2

模式(3) SQL1 => RESULT1 => ID 名称 ----- ------ 001 002 003

SQL2 => RESULT2 => ID 名称 ----- ------ 003 名称1 003 名字2

SQL3 => RESULT3 => ID 名称 ----- ------

我怎样才能加入这 3 个结果成为以下结果? 身份证名称 ----- ------ 001 002 003 名称1 003 名称2

【问题讨论】:

    标签: sql oracle oracle10g


    【解决方案1】:

    一种选择是将UNION 合并到SQL2SQL3 表中,然后将此结果连接回SQL1

    SELECT t1.ID, t1.NAME
    FROM SQL1 t1 LEFT JOIN
    (
        SELECT ID, NAME
        FROM SQL2
        UNION ALL
        SELECT ID, NAME
        FROM SQL3
    ) t2
        ON t1.ID = t2.ID
    

    【讨论】:

    • 谢谢兄弟。抱歉我的误导性问题。每个 sql 的结果可能会有所不同。我已经更新了这个问题。问题是如果某些SQL结果中存在相同的ID,我如何获取该ID的记录,其名称不是空白或NULL。
    • 您的问题现在还不清楚。请再次更新,显示输入和预期输出的示例表格(不是图表)。
    【解决方案2】:

    这适用于您的场景

    with tbl(id,name) as
    (query1 
     union all
    query2
     union all
    query 3
    )
    select * From tbl where name is null
     and id not in
        (select id from tbl where name is not null)
    union all
    select * from tbl where name is not null
    

    我已经创建了示例示例

    with tbl(id,name) as
    (select 1,null from dual union all
    select 2,null from dual union all
    select 3,null from dual union all
    select 3,'NAME1' from dual union all
    select 3,'NAME2' from dual)
    
    select * From tbl where name is null
     and id not in
        (select id from tbl where name is not null)
    union all
    select * from tbl where name is not null
    

    输出

    id  name
    ---------
    1   
    2   
    3   NAME1
    3   NAME2
    

    【讨论】:

    • 谢谢你的回复兄弟!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多