加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL如何实现MYSQL的递归查询

发布时间:2020-12-12 09:19:53 所属栏目:MsSql教程 来源:网络整理
导读:众所周知,目前的mysql版本中并不支持直接的递归查询,但是通过递归到迭代转化的思路,还是可以在一句SQL内实现树的递归查询的。这个得益于Mysql允许在SQL语句内使用@变量。以下是示例代码。 创建表格 插入测试数据 查询语句 0,SUBSTRING_INDEX( SUBSTRING_I

众所周知,目前的mysql版本中并不支持直接的递归查询,但是通过递归到迭代转化的思路,还是可以在一句SQL内实现树的递归查询的。这个得益于Mysql允许在SQL语句内使用@变量。以下是示例代码。

创建表格

插入测试数据

查询语句

0,SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAT('|',-1),'|',1) +1,@le+1) ) levels,@pathlevel:= CONCAT(@pathlevel,id,':',@le,'|') pathlevel,@pathnodes:= IF( pid =0,',0',CONCAT_WS(',@pathall) > 0,SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,1),@pathnodes ),pid ) )paths,@pathall:=CONCAT(@pathall,@pathnodes,'|') pathall FROM treenodes,(SELECT @le:=0,@pathlevel:='',@pathall:='',@pathnodes:='') vv ORDER BY pid,id ) src ORDER BY id

最后的结果如下:

ID 父ID父到子之间级数 父到子路径
------ ------ ---------------------------------------
1 0 0,0
2 1 1,1
3 1 1,1
4 2 2,1,2
5 2 2,2
6 3 2,3
7 6 3,3,6
8 0 0,0
9 8 1,8
10 8 1,8
11 8 1,8
12 9 2,8,9
13 9 2,9
14 12 3,9,12
15 12 3,12
16 15 4,12,15
17 15 4,15
18 3 2,3
19 2 2,2
20 6 3,6
21 8 1,8

以上就是一句SQL实现MYSQL的递归查询的实现全过程,希望对大家的学习有所帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读