将MsSql存储过程转换为MySql-WITH树中的问题

问题描述

我需要将现有的MsSql存储过程转换为mysql。下面提到的查询是我将要转换的示例存储过程。

CREATE PROCEDURE [mydb].[mysp]
@input_userId nvarchar(255) 
AS 
BEGIN 
WITH tree(userId,managerUserId,name,Level) AS
(
SELECT t1.userId,t1.managerUserId,t1.name,0
FROM UserData t1
WHERE managerUserId = @input_userId OR userId=@input_userId 
UNION ALL
SELECT t2.userId,t2.managerUserId,t2.name,t3.Level+1
FROM UserData t2
INNER JOIN tree t3 ON t2.managerUserId=t3.userId
) 

SELECT DISTINCT(res.name),res.userId,res.Level,t1.empNo
FROM tree AS res
INNER JOIN
UserData AS t1 ON res.userId = t1.userId
ORDER BY res.name asc

END

我很困惑如何将有树的一部分转换为MySql。我尝试将其替换为另一个选择,但是由于该树在其他2个选择查询中使用,因此未成功。 如果您能支持我解决这个问题,我将非常感激。

已编辑:

我在mysql 5.6中尝试以下查询。

CREATE PROCEDURE mydb.mysp(
IN input_userId VARCHAR(255)) 
 
BEGIN 
SELECT res.name,t1.empNo
FROM
(
SELECT userId,Level
FROM
(
SELECT t1.userId,t3.Level+1
FROM UserData t2
INNER JOIN tree t3 ON t2.managerUserId=t3.userId
) AS tree
)
FROM tree AS res
INNER JOIN
UserData AS t1 ON res.userId = t1.userId
ORDER BY res.name ASC

END

这给出了类似的错误

SQL错误(1064):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第20行的'FROM tree AS res INNER JOIN UserData AS t1 ON res.userId = t1.userId ORDER BY'附近使用

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...