如何解决将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 举报,一经查实,本站将立刻删除。