mysqlsql语句遍历树结构
MySQL SQL语句遍历树结构实现步骤
常见的树的遍历算法有深度优先遍历(DFS)和广度优先遍历(BFS)。在本任务中,我们将使用深度优先遍历算法来实现对MySQL中树结构的遍历。
id:节点的唯一标识,主键
name:节点名称
parent_id:父节点的id
可以使用以下SQL语句创建表:
CREATE TABLE tree (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
parent_id INT
);

INSERT INTO tree (name, parent_id)
VALUES
('CEO', NULL),
('CTO', 1),
('CFO', 1),
('Engineer', 2),
('Accountant', 3),
('Developer', 4);
从根节点开始,递归查询所有子节点;
对于每个节点,输出节点信息。
以下是使用MySQL的递归查询语句实现树结构的深度优先遍历:
WITH RECURSIVE tree_path (id, name, parent_id, path) AS (
SELECT id, name, parent_id, CAST(name AS CHAR(200)) AS path
FROM tree
WHERE parent_id IS NULL
UNION ALL
SELECT t.id, t.name, t.parent_id, CONCAT(tp.path, ' -> ', t.name)
FROM tree t
JOIN tree_path tp ON t.parent_id = tp.id
)
SELECT * FROM tree_path;
以上代码使用了MySQL的WITH RECURSIVE语法,实现了递归查询。tree_path是一个临时表,用于存储递归查询的结果。SELECT * FROM tree_path语句将输出所有节点的信息。
