【MySQL递归查询树状表的子节点、父节点具体实现_MySQL】教程文章相关的互联网学习教程文章

mysql8 递归查询父子集(临时表with recursive temp as)【代码】【图】

背景开发过程经常会遇到,需要查询某条记录parent_id相关联的父集数据或子集数据(例如层级数据:地区、菜单、评论、多次回访任务等),可使用mysql8的临时表(with recursive temp as)特性去查询。1、Mysql 中需要使用 WITH RECURSIVE 2、Oracle数据库中可使用START [Param] CONNECT BY PRIOR 引入 计算1到100的累加的结果。 WITH RECURSIVE t(n) AS ( //t为我们结果表,n为字段,可以只指定表明不指定字段VALUES (1) //递归的开始...

mysql递归查询【代码】

/*Navicat Premium Data TransferSource Server : localSource Server Type : MySQLSource Server Version : 80021Source Host : localhost:3306Source Schema : testTarget Server Type : MySQLTarget Server Version : 80021File Encoding : 65001Date: 02/11/2020 11:55:44 */SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0;-- ---------------------------- -- Table structure for ...

MySQL递归CTE(公共表表达式)(2)【代码】

1、递归CTE由三个主要部分组成:形成CTE结构的基本结果集的初始查询(initial_query),初始查询部分被称为锚成员。 递归查询部分是引用CTE名称的查询,因此称为递归成员。递归成员由一个UNION ALL或UNION DISTINCT运算符与锚成员相连。 终止条件是当递归成员没有返回任何行时,确保递归停止。1、1 递归CTE的执行顺序如下:首先,将成员分为两个:锚点和递归成员。 接下来,执行锚成员形成基本结果集(R0),并使用该基本结果集进行...

Mysql中的递归查询【代码】

需求 按条件查询菜单及其子菜单。 表结构 sys_menu表,一列是id,一列是parent_id,level表示菜单层级,name菜单名称。 其中level=1的跟菜单,parent_id为空。 查询语句 SELECT @pid,menu.* FROM (select * from sys_menu order by level) menu,(SELECT @pid := '$') pd where ((FIND_IN_SET( menu.parent_id, @pid ) > 0) or (menu.parent_id is null and menu.level=1 and menu.name!='需要过滤的根菜单条件')) AND ((@pid := con...

Mysql 递归查询

这是一个简单的案例 按照记录操作一遍大致上就能明白流程了 CREATE TABLE `t_areainfo` ( `id` INT(11) AUTO_INCREMENT, `level` INT(11) DEFAULT 0, `name` VARCHAR(255) DEFAULT 0, `parentId` INT(11) DEFAULT 0, `status` INT(11) DEFAULT 0, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; INSERT INTO `t_areainfo` VALUES (1, 0, 中国, 0, 0); INSERT INTO `t_areainfo` VALUES (2, 0, 华北区, 1, 0); INSERT INT...

如何在MySql中使用递归查询?【代码】

WITH RECURSIVE transitive_closure(a, b, distance, path_string) AS ( SELECT a, b, 1 AS distance,a || '.' || b || '.' AS path_string,b AS direct_connectionFROM edges2WHERE a = 1 -- set the starting nodeUNION ALLSELECT tc.a, e.b, tc.distance + 1,tc.path_string || e.b || '.' AS path_string,tc.direct_connectionFROM edges2 AS eJOIN transitive_closure AS tc ON e.a = tc.bWHERE tc.path_string NOT LIKE '%' ...

MYSQL中的递归查询?【代码】

我认为我的问题可以通过“递归查询”解决,但是由于MySQL不支持递归查询,因此我尝试使用相邻列表模型.这应该不成问题,因为我知道我想走多深. 这是我需要做的一个例子:表格类别:dept classNum prereqDept prereqClassNum BIO 465 BIO 335 EE 405 EE 325 EE 325 EE 120 BIO 465 EE 120 BIO 335 BIO 225 BIO ...

MySQL递归逻辑【代码】

我正在尝试获得munus&基于角色的子菜单(在其他表格中指定).根据角色,例如.如果我选择了MenuID:1、2、5,则应该获得M1,M2和Amp的所有子菜单. M3.MenuParentID指定父项的MenuId.MenuID MenuParentID MenuName MenuNavigateUrl HasSubMenus 1 -1 M1 1.aspx 0 2 -1 M2 # 1 3 2 M2.1 ...

PHP / MySQL中的简单递归树【代码】

我在MySQL中有此表:id name mother 1 grandma 0 2 myuncle 1 3 mymom 1 4 me 3 5 mysister 3 6 myson 4 7 new_grandma_son 1我在名为data []的数组中整理了此信息$data=array(array("id"=>1,"name"=>"grandma", "mother"=>0),array("id"=>2,"name"=>"myuncle", "mother"=>1),array("i...

MYSQL中递归存储过程获取分层数据的性能【代码】

我有餐桌员工喜欢 雇员(emp_id int主键,emp_name varchar(50),mngr_id int) 此处mngr_id将为null或包含有效的emp_id.这样,它形成了组织中员工的层次结构. 为了遍历整个层次结构,我必须编写递归存储过程. (在Oracle中,使用CONNECT BY .. START WITH很容易) 因此,问题在于,如果层次结构的级别不超过10个级别,那么这种存储过程对性能的影响是什么! 还有其他方法可以达到相同目的吗?解决方法:一个相当简单的迭代邻接表数据库服务器端...

使用mysql中的递归php创建一个数组【代码】

我需要从像这样组织的mysql数据库创建一个数组id description parentId 1 Level 1 0 2 Level 2 0 3 Level 1a 1 4 Level 1b 1 5 Level 1a1 3 6 Level 1a1a 5所以输出是这样的:Level 1Level 1aLevel 1a1Level 1a1aLevel 1b Level 2但是,我当前的代码只输出到第二级,然后让其他每个孩子都成为自己的父级.以下是当前代码:$qu...

mysql – 非recusrive过程中超出了递归限制【代码】

我有一个程序调用另一个程序.他们从不回复对方或打电话给自己,但我收到错误回复,表明他们是.程序如下:CREATE PROCEDURE grantPermission (perm VARCHAR(30), target VARCHAR(30), id VARCHAR(8), host VARCHAR(45), passwd VARCHAR(45))BEGIN SET @setPermissionCmd = CONCAT('GRANT ', perm, ' ON ', target, ' TO ''', id, '''@''', host, ''' IDENTIFIED BY ''', passwd, ''';');PREPARE setPermissionStmt FROM @setPermissio...

使用关系innoDB进行递归MySQL查询【代码】

我有一个像(简化)的表结构: 内容- id_content- my_string1- ...content_has_content- id_content- id_subcontenttopic_has_content- id_topic- id_content任何主题都可以包含多个“内容”,任何“内容”都可以包含多个“子内容”(内容实例).使用给定的id_topic,我想从链接的内容,子内容,子内容的子内容等中接收所有my_string1的列表. 我理解“WITH”不适用于mysql,但无法找到一个很好的递归替代方案. 谢谢丹尼尔解决方法:MySQL中没...

php – 递归MySQL查询?

我有一组按层次组织的数据,应该能够增长到任意大小.我需要检索整个树,但我无法弄清楚如何只使用SQL.我目前的解决方案是创建一个临时表并使用递归函数连续查询树的分支,然后将结果存储在临时表中,我随后再次查询以生成我想要的结果. 我的问题是,我正在做的基本上是一个连接是否正确?构造一个中间表,然后查询结果.似乎应该有一种方法来使用连接,但MySQL文档仅涵盖检索树的部分到有限深度.有没有办法做到这一点?我在PHP中这样做.解决...

php – 如何以递归方式获取此MySQL表中行的“父ID”?【代码】

我的数据库看起来像(pligg cms,示例数据)id catID parentID catName 1 1 0 location 2 2 0 color 3 3 1 USA 4 4 3 Illinois 5 5 3 Chicago 6 6 2 Black 7 7 2 Red比方说,我如何获得芝加哥的顶级parentID,它应该是位置. 我在php中编写递归函数还是在mysql中可行?解决方法:This网站非常好地概述了在mysql和PHP中存储...

递归查询 - 相关标签