在本地环境中(MariaDB 10.2.10)我使用了函数' no_of_descendants'计算有多少后代有当前用户:
DELIMITER //
CREATE FUNCTION no_of_descendants (f_id INT)
RETURNS INTEGER
BEGIN
DECLARE numberOf INT;
WITH RECURSIVE descendant_users(id,parent_id) AS
(
SELECT id,parent_id
FROM app_users
WHERE id = f_id
UNION
Select sub.id, sub.parent_id
FROM app_users sub, descendant_users au
WHERE sub.parent_id = au.id
)
select count(*) INTO numberOf from descendant_users;
RETURN numberOf;
END; //
DELIMITER ;
它工作得很完美,但在客户端的服务器上,5.7版本中有MySQL,它不支持WITH RECURSIVE语句。我无法将其更新为8.0,我也无法安装其他工具。是否可以使用MySQL v5.7运行的方式重新创建此查询?