首页 > 解决方案 > 如何使 WITH RECURSIVE 查询在较低版本的 MySQL 中可运行?

问题描述

在本地环境(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 ;

它工作得很好,但是在客户端的服务器上,有 MySQL 5.7 版本,它不支持 WITH RECURSIVE 语句。我无法将其更新到 8.0,也无法安装其他工具。是否可以用 MySQL v5.7 可运行的方式重新制作此查询?

标签: mysqlmariadbrecursive-query

解决方案


推荐阅读