最近遇到了一个问题,在mysql中如何完成节点下的所有节点或节点上的所有父节点的查询?
在Oracle中我们知道有一个Hierarchical Queries可以通过CONNECT BY来查询,但是,在MySQL中还没有对应的函数!!!
下面是sql脚本,想要运行的直接赋值粘贴进数据库即可。
创建表treenodes(可以根据需要进行更改)
1 |
-- ---------------------------- |
插入几条数据
1 |
-- ---------------------------- |
把下面的语句直接粘贴进命令行执行即可(注意修改传入的参数,默认rootId,表明默认treenodes)
根据传入id查询所有父节点的id
1 |
delimiter // |
执行命令
select * from treenodes where FIND_IN_SET(id,getParList(15));
结果:
| id | nodename | pid |
|---|---|---|
| 8 | H | 0 |
| 9 | I | 8 |
| 12 | L | 9 |
| 15 | O | 12 |
58585918.com很多兼职、返利、招聘网站信息,希望可以帮助大家。
根据传入id查询所有子节点的id
1 |
delimiter // |
执行命令
select * from treenodes where FIND_IN_SET(id,getChildList(7));
结果:
| id | nodename | pid |
|---|---|---|
| 7 | G | 6 |

本文介绍了一个MySQL中的实用技巧,即如何通过自定义函数实现类似Oracle CONNECT BY的功能,从而完成节点下所有子节点或节点上所有父节点的查询。示例包括创建表结构、插入测试数据及实现递归查询所有父节点和子节点的具体SQL语句。
3998

被折叠的 条评论
为什么被折叠?



