美文网首页
sql 查询逻辑A表有Bcde表没有就显示 A表有Bcde表有则

sql 查询逻辑A表有Bcde表没有就显示 A表有Bcde表有则

作者: 吉凶以情迁 | 来源:发表于2023-11-19 17:01 被阅读0次

    sql server数据库查询 , 假设 a b c d e f表都是左关联 ,
    条件1:假如 只有a表存在name=a的记录且a表 flag=1我需要显示,
    条件2:如果b -c -d -e表也存在name=a还需要遵守 b c d e 中还有另外一个status为2的状态条件

    刚开始写的是inner join 这导致 条件1 无法满足,必须全匹配

    写了left join B C D E 这导致 on里面写的status=2的逻辑无效,不为2的记录也显示出来了
    原因或许
    因为是B LEFT C C 又LEFT D ,D 又LEFT E
    c表 on d时 c 记录存在,但是 不符d.status的,但是依然会显示。

    最后解决办法:

    解决办法1: 子查询把a b c d e 单独写一个inner join查询 然后再 left 他们

    解决办法2: 全部left join 他们
    但是where d.status=2 or d.status is null

    格式化显示

    (case isnull(Status,99) when 99 then '仅仅a表存在 else 'A' end) as X

    相关文章

      网友评论

          本文标题:sql 查询逻辑A表有Bcde表没有就显示 A表有Bcde表有则

          本文链接:https://www.haomeiwen.com/subject/ygdmwdtx.html