【发布时间】:2026-01-06 06:15:02
【问题描述】:
我执行以下存储过程来获取特定folder id 的后代。
CREATE PROCEDURE `SP_get_folder_structure`(
I_folder_id VARCHAR(100),
I_user_id INT,
I_sys_id INT
)
BEGIN
SELECT id, parent_id, root, name, quotum, owner, fullpath, createdon, editedon FROM
(SELECT id, parent_id, root, name, quotum, owner, fullpath, createdon, editedon,
CASE WHEN id = I_folder_id THEN @idlist := CONCAT(id)
WHEN FIND_IN_SET(parent_id,@idlist) THEN @idlist := CONCAT(@idlist,',',id)
END as checkId
FROM folders WHERE sys_id = I_sys_id) as T
WHERE checkId IS NOT NULL
ORDER BY id = I_folder_id DESC, parent_id ASC, name ASC LIMIT 100;
END
当我在 MySQL Workbench 上执行此代码时,它只在执行两次查询后返回一个完整的结果集,第一次它只返回一行:
我很困惑为什么会这样。有人有想法吗?
【问题讨论】: