-- 创建一个包含层级关系的表
CREATE TABLE category (
id INT PRIMARY KEY,
name VARCHAR(50),
parent_id INT
);
-- 插入一些示例数据
INSERT INTO category (id, name, parent_id) VALUES
(1, 'Electronics', NULL),
(2, 'Computers', 1),
(3, 'Laptops', 2),
(4, 'Desktops', 2),
(5, 'Smartphones', 1),
(6, 'Android Phones', 5),
(7, 'iOS Phones', 5);
-- 递归查询所有子节点的示例代码(使用WITH RECURSIVE)
WITH RECURSIVE subcategories AS (
-- 基础查询:选择根节点
SELECT id, name, parent_id
FROM category
WHERE id = 1 -- 这里假设我们从ID为1的节点开始
UNION ALL
-- 递归部分:连接子节点
SELECT c.id, c.name, c.parent_id
FROM category c
INNER JOIN subcategories sc ON c.parent_id = sc.id
)
SELECT * FROM subcategories;
创建表结构:首先创建了一个名为 category
的表,其中包含 id
、name
和 parent_id
三个字段。parent_id
用于表示层级关系,即某个节点的父节点。
插入示例数据:插入了一些示例数据来模拟层级关系。例如,Electronics
是根节点,Computers
和 Smartphones
是其子节点,而 Laptops
和 Desktops
是 Computers
的子节点。
递归查询:使用 WITH RECURSIVE
语句进行递归查询。递归查询分为两部分:
id=1
开始)。最终结果:查询结果会返回从指定根节点开始的所有子节点,包括直接子节点和间接子节点。
如果你需要针对不同的根节点进行查询,只需修改 WHERE id = 1
中的 id
值即可。
上一篇:k8s部署mysql
下一篇:windows重启mysql服务
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站