达梦数据库
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