问题描述
我看了 How to get lowest,common parent for 2 rows in recursive table (SQL) 他们建议的地方:
WITH
hier1 (id,parent) AS (
SELECT id,parent
FROM table
WHERE id = @user1
UNION ALL
SELECT id,parent
FROM table l,hier1 h
WHERE l.id = h.parent
),hier2 (id,parent
FROM table
WHERE id = @user2
UNION ALL
SELECT id,hier1 h
WHERE l.id = h.parent
)
SELECT TOP 1 hier1.id
FROM hier1,hier2
WHERE hier1.id = hier2.id
我改变了我的东西:
WITH hier1(ID,motherID,fatherID) AS (
SELECT ID,fatherID
FROM persons
WHERE ID = 3 -- example
UNION ALL
SELECT ID,fatherID
FROM persons l,hier1 h
WHERE l.ID = h.motherID OR l.ID = h.fatherID),hier2(ID,fatherID) AS(
SELECT ID,fatherID
FROM persons
WHERE ID = 17 -- example
UNION ALL
SELECT ID,hier1 h
WHERE l.ID = h.motherID OR l.ID = h.fatherID)
SELECT hier1.ID
FROM hier1,hier2
WHERE hier1.ID = hier2.ID
LIMIT 1
但是得到:
表 'familytree.hier1' 不存在
它还说:
无法识别的语句类型。 (在位置 0 的“WITH”附近)
我使用 MariaDB。 MariaDB documentation for WITH
我试着在这里寻找答案: Oracle WITH CLAUSE not working?
似乎对某些人有效,对某些人无效..?我希望得到一些指导!
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)