mysql - 尝试在 mysql 中创建过程时出现 RECURSIVE 附近的语法错误

标签 mysql database mariadb datagrip

我正在尝试使用 datagrip 在 mysql 中实现一个过程,但我仍然收到此错误。

[42000][1064] 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在第 3 行的“RECURSIVE后代 AS ( SELECT e.activity, CAST(e.activity AS CHAR(500)) AS”附近使用的正确语法

我在Windows上运行

mysql Ver 8.0.15,适用于 x86_64 上的 Win64(MySQL 社区服务器 - GPL) 服务器版本:5.5.5-10.1.37-MariaDB mariadb.org 二进制发行版

CREATE DEFINER=`root`@`localhost` PROCEDURE `findPaths`()
BEGIN
WITH RECURSIVE descendants AS
(
SELECT e.activity, CAST(e.activity AS CHAR(500)) AS path, n.cost as total_cost
FROM edges e JOIN nodes n
ON e.activity=n.code
WHERE e.activity='A'
UNION ALL
SELECT e.activity, CONCAT(d.path, ',', e.activity), d.total_cost+(SELECT cost FROM nodes WHERE code=e.activity)
FROM descendants d, edges e
WHERE e.parent=d.activity
)
SELECT * FROM descendants WHERE activity='M' OR activity='N' ORDER BY total_cost;

END

我希望创建并访问该过程以便运行

最佳答案

MariaDB-10.2 中添加了递归 CTE

从您的版本字符串中您可以看到 MariaDB-10.1.37

关于mysql - 尝试在 mysql 中创建过程时出现 RECURSIVE 附近的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55720815/

相关文章:

Mysql 数据库设计 - 存储单经纬度和多经纬度

mysql - 国际国家数据库列表

mysql - centos中mariadb远程连接失败

MySQL排序存储未知语言的多语言数据

php - 检查多列上的重复行

asp.net-mvc - 如何从数据库加载一次,然后使用静态方法检索数据?

mysql - 从副本访问主表

java - 将 MariaDB DyanmicColumn 挂接到 Java Spring

mysql - 如何使用 MySQL View 和 ORDER BY 子句?

MySQL批处理文件更新