如何在较低版本的MySQL中使WITH RECURSIVE查询可运行?

时间:2018-05-18 09:16:20

标签: mysql mariadb recursive-query

在本地环境中(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运行的方式重新创建此查询?

0 个答案:

没有答案