mysql8递归查询(可删除全部子节点)

原创 freeguy  2023-03-05 21:14:02  阅读 1814 次 评论 0 条

1、教学:

2.png

where id=19是终止条件(过滤条件),即只保留id=19的末级记录。

也可以没有终止条件,全部递归结果都查询出来。


2、实战:

2.1、查询全部子节点:

WITH RECURSIVE r AS (

#起始部分

    SELECT id,name,concat(id,'') as fullid FROM reqsource t where id=253

    #递归部分

    UNION ALL

    SELECT t.id,t.name,concat(r.fullid,'\\',t.id) as fullid FROM reqsource t,r WHERE r.id = t.parentid

)

select id,name,fullid from r


2.2、删除全部子节点:

delete from reqsource where id in (

WITH RECURSIVE r AS (

#起始部分

    SELECT id FROM reqsource t where id=253

    #递归部分

    UNION ALL

    SELECT t.id FROM reqsource t,r WHERE r.id = t.parentid

)

select id from r)


本文地址:http://freedeman.top/?id=13
版权声明:本文为原创文章,版权归 freeguy 所有,欢迎分享本文,转载请保留出处!

评论已关闭!