首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自@row_number 5的MySQL 5在MySQL 8中有不同的表现吗?

来自@row_number 5的MySQL 5在MySQL 8中有不同的表现吗?
EN

Stack Overflow用户
提问于 2021-04-06 20:56:28
回答 1查看 27关注 0票数 1

简单表userpoints

代码语言:javascript
复制
userid | points
1      | 456
2      | 3
3      | 1778
...    | ...

我在MySQL 5中使用了多年的这个函数来接收用户名:

代码语言:javascript
复制
SELECT userid, userrank FROM 
    (SELECT @row_number:=@row_number+1 AS userrank, userid 
    FROM `userpoints`, (SELECT @row_number := 0) r 
    ORDER BY points DESC) t 
    WHERE userid = 123

并返回用户it 123的用户名,例如3456

使用MySQL 8,我只获得1作为userrank的值,而我尝试的每个用户I都是这样。

问题是什么,如何解决?

我单独尝试了内部SELECT,这给出了所有具有正确用户名的用户列表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-06 21:10:01

在MySQL 8中,不建议将用户变量设置为表达式中的副作用.您应该使用窗口函数代替。

代码语言:javascript
复制
SELECT t.userid, t.userrank 
FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY points DESC) AS userrank, userid 
    FROM `userpoints` 
) t 
WHERE t.userid = 123;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66976352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档