mysql查询下级

原创
ithorizon 3个月前 (09-17) 阅读数 126 #MySQL

MySQL查询下级:实现树形结构数据的检索

在实际开发中,我们常常会遇到需要查询树形结构数据下级的需求。例如,组织架构、分类层级等。MySQL作为一种广泛使用的数据库管理系统,拥护通过递归查询等方法来实现这一需求。本文将简要介绍怎样使用MySQL查询下级数据,并以一个示例进行演示。

准备数据

首先,我们需要创建一个示例表并插入一些数据。以下是一个简洁的分类层级表:

CREATE TABLE category (

id INT PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(50),

parent_id INT,

FOREIGN KEY (parent_id) REFERENCES category(id)

);

INSERT INTO category (name, parent_id) VALUES ('电子产品', NULL);

INSERT INTO category (name, parent_id) VALUES ('手机', 1);

INSERT INTO category (name, parent_id) VALUES ('电脑', 1);

INSERT INTO category (name, parent_id) VALUES ('平板', 1);

INSERT INTO category (name, parent_id) VALUES ('华为', 2);

INSERT INTO category (name, parent_id) VALUES ('苹果', 2);

INSERT INTO category (name, parent_id) VALUES ('小米', 2);

INSERT INTO category (name, parent_id) VALUES ('华为笔记本', 3);

INSERT INTO category (name, parent_id) VALUES ('苹果笔记本', 3);

查询下级分类

现在,我们想查询某个分类的下级分类。例如,查询“电子产品”分类下的所有子分类。以下是使用递归查询的方法来实现:

WITH RECURSIVE sub_category AS (

SELECT id, name, parent_id

FROM category

WHERE parent_id = 1 -- 假设电子产品ID为1

UNION ALL

SELECT c.id, c.name, c.parent_id

FROM category c

JOIN sub_category sc ON c.parent_id = sc.id

)

SELECT * FROM sub_category;

查询最终

执行上述递归查询,可以得到以下最终:

+----+--------+-----------+

| id | name | parent_id |

+----+--------+-----------+

| 2 | 手机 | 1 |

| 3 | 电脑 | 1 |

| 4 | 平板 | 1 |

| 5 | 华为 | 2 |

| 6 | 苹果 | 2 |

| 7 | 小米 | 2 |

| 8 | 华为笔记本 | 3 |

| 9 | 苹果笔记本 | 3 |

+----+--------+-----------+

通过本文的介绍,相信大家已经掌握了怎样在MySQL中查询树形结构数据的下级信息。这种方法在处理具有层级关系的业务数据时非常有用,期望对大家有所帮助。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: MySQL


热门