mysql - 如何使 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 可运行的方式重新制作此查询?
解决方案
推荐阅读
- java - Java AES 解密异常:javax.crypto.BadPaddingException:
- java - Spring Boot 从 AWS 参数存储读取参数
- mysql - 如何使用触发器复制表
- java - 无效参数错误使用 NetShareAdd windows Api 使用 JNA 库
- angular - Primeng Autocomplete - 不使用 Angular 中的反应形式修补值
- elasticsearch - Filebeat 缓冲区控制
- tomcat - 如何将流量从 Nginx 入口路由到应用程序 Tomcat 服务器
- jmeter - 使用 Jmeter 连接雪花 JDBC 连接器时收到错误
- r - 识别事件前后的行
- java - 如何在数据库连接中正确使用 try-with-resources?