六七网络

当前位置: 首页 > 知识问答 > 如何在MySQL中实现递归查询以获取父节点信息?

知识问答

如何在MySQL中实现递归查询以获取父节点信息?

2025-09-12 06:52:01 来源:互联网转载

在MySQL中,可以使用递归查询来获取父节点信息。层次递归查询函数(如WITH RECURSIVE)允许我们定义一个初始查询,并在其结果上递归执行相同的查询,直到满足某个终止条件。这在处理树形结构数据时非常有用。

MySQL递归查询父节点的层次递归查询函数可以使用WITH RECURSIVE语句来实现,下面是一个详细的示例,包括小标题和单元表格:

1、创建测试表结构

CREATE TABLEtest_tree (id int(11) NOT NULL AUTO_INCREMENT,name varchar(255) NOT NULL,parent_id int(11) DEFAULT NULL,  PRIMARY KEY (id),  KEYparent_id (parent_id)) ENGINE=InnoDB;

2、插入测试数据

INSERT INTOtest_tree (name,parent_id) VALUES('A', NULL),('B', 1),('C', 1),('D', 2),('E', 2),('F', 3),('G', 4);

3、使用递归查询父节点层次

WITH RECURSIVE cte AS (  SELECT id, name, parent_id, 1 AS level  FROM test_tree  WHERE parent_id IS NULL  UNION ALL  SELECT t.id, t.name, t.parent_id, cte.level + 1  FROM test_tree t  INNER JOIN cte ON t.parent_id = cte.id)SELECT * FROM cte;

这个查询将返回以下结果:

id name parent_id level
1 A NULL 1
2 B 1 2
3 C 1 2
4 D 2 3
5 E 2 3
6 F 3 3
7 G 4 3

在这个例子中,我们首先定义了一个名为cte的公共表表达式(CTE),它包含两个部分:基本查询和递归查询,基本查询从根节点(没有父节点)开始,递归查询则通过连接当前级别的节点与其父节点来获取下一级节点,我们从CTE中选择所有记录以显示层次结构。

mysql递归查询父子

上一篇:淘宝发货提醒的短信在哪里设置 快递通知设置,淘宝怎么设置发货通知到手机短信提示

下一篇:包你说小程序为什么提现不了