带有 ORDER BY 的 MariaDB ROW_NUMBER 排序不正确

MariaDB ROW_NUMBER with ORDER BY not ordering correctly

我设置了一个简单的查询来让我的菜单项按相应的语言消息内容排序,但奇怪的是,这并没有正确设置行号。这是查询:

SET @idx = 0;
SELECT (@idx:=@idx + 1) AS neworderindex, a.id, a.messagecontent FROM (
    SELECT m.id, l.messagecontent
    FROM app_menuitem m 
    INNER JOIN app_language l ON m.id = l.messagekey AND l.locale = 'it'
    WHERE m.parent_id = 'some.parent.id'
    ORDER BY l.messagecontent
) a;

我尝试先执行子查询并且结果排序正确,我只是不知道 @idx 变量发生了什么。

使用window函数:

SELECT ROW_NUMBER() OVER (ORDER BY l.messagecontent) as neworderindex,
       m.id, l.messagecontent
FROM app_menuitem m INNER JOIN
     app_language l
     ON m.id = l.messagekey AND l.locale = 'it'
WHERE m.parent_id = 'some.parent.id'
ORDER BY l.messagecontent;

此功能于 2016 年与 MariaDB 10.2.0 一起发布。