Сбой запроса с рекурсией после перехода с MYSQL 5.6 на MariaDB 10.1 - PullRequest
0 голосов
/ 05 июня 2019

У меня есть таблица:

Language:
    Seq INT | ParentLanguageSeq INT | Name VarChar
    -------------------------------------------------
    0       | NULL                  | English
    1       | 0                     | English (UK)
    2       | 1                     | English (Irish)

И запрос:

SET @searchSEQ = 2;
SELECT
    l.seq,
    @pv := l.parentlanguageseq parentlanguageseq,
    l.name
FROM
(
    SELECT * FROM `language` ORDER BY seq DESC
) as l
JOIN
(
    select @pv := @searchSEQ
) tmp
WHERE
    l.seq = @pv;

В MYSQL 5.6 запрос будет возвращать все три строки с searchSeq, установленным на 2.

Seq INT | ParentLanguageSeq INT | Name VarChar
-------------------------------------------------
2       | 1                     | English (Irish)
1       | 0                     | English (UK)
0       | NULL                  | English

Если searchSeq был установлен на 1, он вернет две строки.

Seq INT | ParentLanguageSeq INT | Name VarChar
-------------------------------------------------
1       | 0                     | English (UK)
0       | NULL                  | English

Если бы searchSeq был установлен на 0, он вернул бы две строки.

Seq INT | ParentLanguageSeq INT | Name VarChar
-------------------------------------------------
0       | NULL                  | English

Однако в MariaDB 10 он возвращает только строку с английским (ирландским) вместо всех трех. Когда searchSeq установлен на 2.

Seq INT | ParentLanguageSeq INT | Name VarChar
-------------------------------------------------
2       | 1                     | English (Irish)

Как мне это сделать в MariaDB 10.1?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...