递归SQL的写法

递归SQL的写法SELECT FROM SELECT FROMorganiza A SELECT pv 1604 BWHERE find in set parent id pv ANDlength pv concat pv id

 1.递归查询某一节点的无限级子集(不含自身)。

# 功能:递归查询某一节点的无限级子集。 # 参数说明: # 表名:organization  # 父ID字段:parent_id # 主键ID字段:id # 顶层ID值:1604 SELECT * FROM ( SELECT * FROM organization ) A, ( SELECT @pv := '1604' ) B WHERE find_in_set( parent_id, @pv ) AND length( @pv := concat( @pv, ',', id ))

2.反向递归查询某一节点的无限级直属上级(包含自身)。

# 功能:反向递归查询本级及所有直属上级 # 参数说明: # 表名:topo_tree  # 父ID字段:parent_id # 主键ID字段:id # 底层ID示例值:15 SELECT T2.* FROM ( SELECT @r AS _id, ( SELECT @r := parent_id FROM topo_tree WHERE id = _id ) AS parent_id, @l := @l + 1 AS lvl FROM ( SELECT @r := 15, @l := 0 ) vars, topo_tree h WHERE @r <> 0 ) T1 JOIN topo_tree T2 ON T1._id = T2.id ORDER BY T1.lvl DESC;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203359.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午9:59
下一篇 2026年3月19日 下午9:59


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号