达梦数据库

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

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐