带有 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 一起发布。
我设置了一个简单的查询来让我的菜单项按相应的语言消息内容排序,但奇怪的是,这并没有正确设置行号。这是查询:
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 一起发布。