Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql递归查询所有子节点

作者:仯孒①個亾哋杺¢涳孒   发布日期:2025-10-04   浏览:43

-- 创建一个包含层级关系的表
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;

解释说明:

  1. 创建表结构:首先创建了一个名为 category 的表,其中包含 idnameparent_id 三个字段。parent_id 用于表示层级关系,即某个节点的父节点。

  2. 插入示例数据:插入了一些示例数据来模拟层级关系。例如,Electronics 是根节点,ComputersSmartphones 是其子节点,而 LaptopsDesktopsComputers 的子节点。

  3. 递归查询:使用 WITH RECURSIVE 语句进行递归查询。递归查询分为两部分:

    • 基础查询:选择初始的根节点(这里假设从 id=1 开始)。
    • 递归部分:通过自连接的方式,逐步获取子节点,直到没有更多的子节点为止。
  4. 最终结果:查询结果会返回从指定根节点开始的所有子节点,包括直接子节点和间接子节点。

如果你需要针对不同的根节点进行查询,只需修改 WHERE id = 1 中的 id 值即可。

上一篇:k8s部署mysql

下一篇:windows重启mysql服务

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

存储过程mysql

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

unsigned在mysql中是什么意思

centos9 安装mysql

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站