当前位置:   article > 正文

关于mysql的树查询,查询子节点或者根节点(向上向下递归)_mysql查询树结构数据通过子节点查询根节点

mysql查询树结构数据通过子节点查询根节点

问题描述:

关于mysql的树查询,看网上大部分都是写一个自定义函数,然后调用来实现,但是我不会啊,然后就通过关联表自身实现树查询功能。
我在项目中遇到两类,可能也就是这两类吧。。。一是根据根节点查询出下面所有的子节点(向下递归);二是根据选择的子节点查询出它所在的根节点(向上递归)。两类都通过表关联实现,虽然麻烦,但是还是可以的。记录一下,方便下次在用到不用在思考了 哈哈。

根据根节点查询所有子节点(向下递归):

SELECT distinct e.id FROM c_channel a 
INNER JOIN c_channel b ON a.id = b.pid or a.id = b.id 
INNER JOIN c_channel c ON b.id = b.pid or b.id = c.id 
INNER JOIN c_channel d ON c.id = d.pid or c.id = d.id 
INNER JOIN c_channel e ON d.id = e.pid or d.id = e.id 
WHERE a.id = '00001' 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

查询的就是最后关联的那个表(e表),树有几层,就写几个关联。


根据子节点查询根节点(向上递归):

SELECT DISTINCT a.id FROM c_channel a 
LEFT JOIN c_channel b ON a.id = b.pid OR a.id = b.id
LEFT JOIN c_channel c ON b.id = c.pid OR b.id = c.id
LEFT JOIN c_channel d ON c.id = d.pid OR c.id = d.id
LEFT JOIN c_channel e ON d.id = e.pid OR d.id = e.id
WHERE e.id = '727' AND a.pid IS NULL
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

同样,树有几层,就写几个关联。最后条件为最后一个关联表。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/442175
推荐阅读
相关标签
  

闽ICP备14008679号