求救大神 mysql如何实现递归查询

时间:2021-07-03 06:20:44
在做oracle到mysql的移植问题,oracle用到了一个函数start with ...connect by 函数 用来实现层次查询和递归查询,请


问mysql中如何实现层次查询呢??紧急求救啊



select * from tborgan start with organid =
            (select u.organid from tbuser u where u.username = 'admin')
connect by organid = prior organfatherid ;

把这句oracle修改为mysql语句。。。

11 个解决方案

#1


不懂oracle。举个例子?

#2


假如说有一张表emp表

empid par_managid emp_name 几个字段吧
 1                zhangsan
 2       1         lisi
 3       2         wangwu
 4       2         zhaoliu
 5       3         sunqi
 6       4         zhuba

就像这样一个表吧记录这间有层次 应该是递归查询 empid的记录作为跟节点 ,没有par_managid号
每条记录是被打乱的 我怎么查询出这样的 记过集呢 

应该是这样说吧有不女的地方请大神补充

#3


尽快尽快啊用什么办法都行 什么存储过程 什么union all我都不懂 什么临时表 给我一个看的懂的

#4


不明白,把你需要的结果贴出来:

empid par_managid emp_name 
 1                zhangsan
 2        1       lisi
 3        2       wangwu
 4        2       zhaoliu
 5        3       sunqi
 6        4       zhuba

想要得到的结果:

#5


http://blog.csdn.net/acmain_chm/article/details/4142971
MySQL中进行树状所有子节点的查询
在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点。但很遗憾,在MySQL的目前版本中还没有对应的功能。 在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现。 但很多时候我们...

#6


哥哥你给我的函数不能执行啊

#7


直接利用find_in_set函数配合这个getChildlst来查找 你的这个函数很好用 可不支持子查询 

我们的getChildlst()里边要好几个根id,是一个子查询 ,而你的只能放一个数值。帮忙吧这个函数给改改

http://blog.csdn.net/acmain_chm/article/details/4142971

select getChildLst(

    select organid from tbuserpurview where userid=1);
你看有子查询就不能用了啊 

#8


http://blog.csdn.net/acmain_chm/article/details/4142971
MySQL中进行树状所有子节点的查询
你说的不能做子查询还有其他方法吗? start with 我的后边是跟一个子查询 是一个根节点集合

#9


高手啊,mysql也能递归

#10


请ACMAIN_CHM
帮忙回答

#11


该回复于2012-09-09 16:29:10被版主删除

#1


不懂oracle。举个例子?

#2


假如说有一张表emp表

empid par_managid emp_name 几个字段吧
 1                zhangsan
 2       1         lisi
 3       2         wangwu
 4       2         zhaoliu
 5       3         sunqi
 6       4         zhuba

就像这样一个表吧记录这间有层次 应该是递归查询 empid的记录作为跟节点 ,没有par_managid号
每条记录是被打乱的 我怎么查询出这样的 记过集呢 

应该是这样说吧有不女的地方请大神补充

#3


尽快尽快啊用什么办法都行 什么存储过程 什么union all我都不懂 什么临时表 给我一个看的懂的

#4


不明白,把你需要的结果贴出来:

empid par_managid emp_name 
 1                zhangsan
 2        1       lisi
 3        2       wangwu
 4        2       zhaoliu
 5        3       sunqi
 6        4       zhuba

想要得到的结果:

#5


http://blog.csdn.net/acmain_chm/article/details/4142971
MySQL中进行树状所有子节点的查询
在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点。但很遗憾,在MySQL的目前版本中还没有对应的功能。 在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现。 但很多时候我们...

#6


哥哥你给我的函数不能执行啊

#7


直接利用find_in_set函数配合这个getChildlst来查找 你的这个函数很好用 可不支持子查询 

我们的getChildlst()里边要好几个根id,是一个子查询 ,而你的只能放一个数值。帮忙吧这个函数给改改

http://blog.csdn.net/acmain_chm/article/details/4142971

select getChildLst(

    select organid from tbuserpurview where userid=1);
你看有子查询就不能用了啊 

#8


http://blog.csdn.net/acmain_chm/article/details/4142971
MySQL中进行树状所有子节点的查询
你说的不能做子查询还有其他方法吗? start with 我的后边是跟一个子查询 是一个根节点集合

#9


高手啊,mysql也能递归

#10


请ACMAIN_CHM
帮忙回答

#11


该回复于2012-09-09 16:29:10被版主删除