2016-08-05 39 views
0

我有一個表 「knowledgemodel」 [在這裏輸入的形象描述] [1]Mysql的遞歸查詢不工作MariaDB的

我的查詢

SELECT 
    title, id, @parent:=parent_id as prnt 
FROM 
(SELECT @parent:=3) a 
JOIN 
(SELECT * FROM knowledgemodel ORDER BY id DESC) b 
where 
@WHERE=id 

enter image description here

在MySQL 服務器:通過TCP/IP的127.0.0.1 服務器類型:MySQL 服務器版本:5.6.16 - MySQL社區服務器(GPL) 協議版本:10 以上查詢工作正常。

但在MariaDB的即時得到只有一條記錄enter image description here

任何幫助?

+0

我不確定,但不要錯過'JOIN'之後的'ON'語句嗎? – Marcus

+0

不需要'ON'。這是一個'CROSS JOIN',第一個表只是初始化'@ parent'。 –

+0

提取所有行似乎非常低效,然後用'id'過濾。將WHERE id = @ where移到第二個子查詢中。然後意識到你不需要這個子查詢。 –

回答

0

我發現了問題並解決了問題。

SELECT T2.id,T2.title,T2.parent_id如PRNT

FROM(

SELECT @r AS _id,

(SELECT @r:= PARENT_ID FROM knowledgemodel WHERE ID = _id)AS PARENT_ID,

@l:= @l + 1 AS LVL

FROM(

SELECT @r:= 「$值[ '路徑']。」,@l:= 0)瓦爾,knowledgemodel米WHERE @r <> 0)

T1 JOIN knowledgemodel T2 ON T1._id = T2 .id ORDER BY T1.id asc

LNine SELECT「$ value ['path']」@r:= 5是ID。結果如下: