2016-08-05 2 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 Сервер: 127.0.0.1 через TCP/IP Тип сервера: MySQL Версия сервера: 5.6.16 - Сервер сообщества MySQL (GPL) Версия протокола: 10 Выше Query работал отлично.

Но на MariaDB им получать только один рекорд enter image description here

Любая помощь ??

+0

Я не уверен, но вы не пропустите заявление 'ON' после' JOIN'? – Marcus

+0

Не требуется 'ON'. Это «CROSS JOIN», где первая таблица - это просто инициализировать '@ parent'. –

+0

Кажется крайне неэффективным для извлечения всех строк, а затем фильтром 'id'. Переместите 'WHERE id = @ where' во второй подзапрос. Тогда поймите, что вам это не нужно в качестве подзапроса. –

ответ

0

Я нашел проблему и устранил проблему.

ВЫБОР t2.id, T2.title, T2.parent_id, как PRNT

ОТ (

ВЫБОР @r КАК _id,

(SELECT @r: = parent_id ОТ knowledgemodel WHERE ID = _id) А.С. parent_id,

@l: = @l + 1 КАК лвл

ОТ (

ВЫБОР @r: = "$ значение [ 'путь'].", @l: = 0) вары, knowledgemodel м где @r <> 0)

Т1 РЕГИСТРИРУЙТЕСЬ knowledgemodel T2 ON T1._id = Т2 .id ORDER BY T1.id по возрастанию

LNine SELECT "$ value ['path']" @r: = 5 - это идентификатор. Результат следующий:

Смежные вопросы