例如,创建一个查询来关联所有用户及其帖子
SELECT users.nameUser, posts.namePost
FROM users
JOIN posts ON users.id = posts.user_id;
它工作得很好,但我需要对结果进行编号;所以我用这种方式声明了一个用户变量
SET @counter = 0;
现在我用它
SELECT (@counter := @counter + 1) AS NP, users.nameUser, posts.namePost
FROM users
JOIN posts ON users.id = posts.user_id;
但是现在有了mysql 8和window函数,我需要使用另一种方法来避免用户变量
我怎样才能做到这一点?
记得。。。
如果需要变量增加其值,则必须使用 :=
否则,无论结果集的大小,它都保持相同的值
1条答案
按热度按时间cuxqih211#
由于mysql 8支持窗口函数,您可以使用:
row_number()
行号()的作用是什么?它从1开始计数,然后以1加1递增
row_number()需要与over子句一起使用,才能对特定列(在本例中为nameuser)进行asc o desc排序
我的代码应该是这样的