Oracle查询父子级 去除有子级的父级

    SELECT
        b.SRLXDM,
        b.FJ 
    FROM
        SRGL_SRXMB a
        JOIN SRGL_SRLXB b ON b.srlxdm = a.srly 
        where  a.ZGBM = '113400'               
    GROUP BY
        b.SRLXDM,
        b.FJ
    ORDER BY
         b.SRLXDM

查询结果,如图

可以看到SRLXDM003是有子级的,需求是去掉有子级的父级

例子:

SELECT
    * 
FROM
    table1 t1 
WHERE
    NOT EXISTS ( SELECT 1 FROM table1 t2 WHERE t2.parent_id = t1.id );

    table1会查出所有的父子级关系的结果集,子查询中是找出有子级的的父级,NOT EXISTS将t1中有子级的父级进行过滤

修改后:

SELECT * FROM
    (SELECT
        b.SRLXDM,
        b.FJ 
    FROM
        SRGL_SRXMB a
        JOIN SRGL_SRLXB b ON b.srlxdm = a.srly 
        where  a.ZGBM = '113400'               
    GROUP BY
        b.SRLXDM,
        b.FJ ) t1
WHERE 
    NOT EXISTS(SELECT * FROM (SELECT
        b.SRLXDM,
        b.FJ 
    FROM
        SRGL_SRXMB a
        JOIN SRGL_SRLXB b ON b.srlxdm = a.srly 
        where  a.ZGBM = '113400'               
    GROUP BY
        b.SRLXDM,
        b.FJ ) t2 where t2.FJ = t1.SRLXDM )
ORDER BY
    SRLXDM

查询结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值