首页 > 解决方案 > Oracle SQL Self-Join:如何包含缺失的记录

问题描述

即使没有记录,我也想显示名称和计划。我试图在这个上使用自我加入,但没有运气:(

脚本:

    SELECT DISTINCT    A.NAME  , B.PLAN
    FROM PLAYER A  
    LEFT JOIN PLAYER B
    ON A.NAME = B.NAME 
    WHERE A.NAME IN ( 'BOGGIE', 'STEPH')
    AND  B.PLAN IN ('PLAN200' , 'PLAN999');

当前结果

    NAME    PLAN
    BOOGIE  PLAN200
    STEPH   PLAN200

预期结果

    NAME    PLAN
    BOOGIE  PLAN200
    BOOGIE  
    STEPH   PLAN200
    STEPH   

桌子

    NAME    PLAN    AMOUNT  CONTRACT
    BOGGIE  PLAN200   200      24
    STEPH   PLAN200   200      24

标签: sqloracle

解决方案


您可以尝试使用将您的其他条件放入ON clause

SELECT DISTINCT    A.NAME  , B.PLAN
    FROM PLAYER A  
    LEFT JOIN PLAYER B
    ON A.NAME = B.NAME 
    and A.NAME IN ( 'BOGGIE', 'STEPH')
    AND  B.PLAN IN ('PLAN200' , 'PLAN999');

推荐阅读