达梦数据库,mysql数据库 递归查询(树形结构)sql语句

本文介绍了如何使用SQL(如达梦数据库的`SELECTid,name,parent_id`)和WITHRECURSIVE语句在Mysql中创建一个菜单的层次结构,通过category_tree视图展示各级别菜单及其关联关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

达梦数据库

select id,name,parent_id from SYS_MENU
START WITH parent_id ='1'
CONNECT by PRIOR  ID  =  parent_id 

Mysql数据库

WITH RECURSIVE category_tree AS (
    -- 非递归部分:基础情况,选择顶级类别(parent_id 为 NULL 或某个特定值)
    SELECT id, name, parent_id,  CAST(id AS CHAR(255)) AS path
    FROM sys_menu
    WHERE parent_id='001'
    UNION ALL
    -- 递归部分:选择子类别,并使用路径来避免循环(可选优化)
    SELECT c.id, c.name, c.parent_id,  CONCAT(ct.path, '->', c.id) AS path -- 使用路径来避免循环,确保不会无限递归下去。
    FROM sys_menu c
    JOIN category_tree ct ON c.parent_id = ct.id -- 这里定义了递归关系。
)
SELECT * FROM category_tree

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是唐赢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值