mysql实现ORACLE的connectbyprior⽗⼦递归查询oracle中有connect by prior ,可以实现⽗⼦递归查询。⽽mysql中没有这种功能,但我们可以变通实现。
⽐如⼀个表:
Table Name: tb_Tree
Id | ParentId | Name
--------------------mysql二次安装时密码错误
1  | 0        | Fruits
2  | 0        | Vegetables
3  | 1        | Apple
mysql中isnull用法4  | 1        | Orangemysql语句转oracle
5  | 2        | Cabbage
6  | 2        | Eggplant
我们需要知道某个ID的所有下级。
以下这个查询,可以列出所有⽔果蔬菜的四层上级ID,如果没有四级,则相应的parentid为Null。(你也可以扩展级数)
select id,name,parentid
,(select parentid from tb_tree where id=t.parentid) parentid2
,(select parentid from tb_tree where id=(select parentid from tb_tree where id=t.parentid)) parentid3
,(select parentid from tb_tree where id=(select parentid from tb_tree where id=(select parentid from tb_tree where id=t.parentid))) parentid4
from tb_tree t
于是我们很⽅便查到我们所要的结果,⽐如要查fruits的所有children:
select id ,name from (
apache log4j是什么
select id, name, parentid
资源网源码自动采集
,(select parentid from tb_tree where id=t.parentid) parentid2
,(select parentid from tb_tree where id=(select parentid from tb_tree where id=t.parentid)) parentid3
,(select parentid from tb_tree where id=(select parentid from tb_tree where id=(select parentid from tb_tree where id=t.parentid))) parentid4 from tb_tree t) tt
c sqlite
where ifnull(parentid4,0)=1 or ifnull(parentid3,0)=1 or ifnull(parentid2,0)=1 or ifnull(parentid,0)=1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。