mysql - 获取 SQL 结果中的行号

标签 mysql

 SELECT a.userid, u.name, u.profilePic , 
   SUM(activity_weight) AS totalPoints, 
  (SELECT @rank:=1 +1) AS rank
 FROM activity_entries a 
 INNER JOIN users1 u ON u.id = a.userid 
 WHERE competitionId = '5216078af3730' 
 GROUP BY a.userid 
 ORDER BY totalPoints DESC

所以我有这个运行良好的 SQL 查询,我根据需要返回 totalPoints,但我也希望获得每个结果的排名/行位置。

目前上面的查询为每行返回排名 2,显然没有正确递增。

希望得到一些帮助/建议!

J

最佳答案

试试这个:

(SELECT @rank:=@rank +1)

对于您刚刚添加的每一行,1 + 1 始终为 2。

编辑:

你需要初始化变量:

SET @rank=0;

您需要在使用相同 连接之前执行此查询。

SELECT
    tmp.userid,
    tmp.name,
    tmp.profilePic,
    tmp.totalPoints,
    (SELECT @rank:=@rank +1) AS rank
FROM (
    SELECT 
        a.userid, 
        u.name, 
        u.profilePic , 
        SUM(activity_weight) AS totalPoints
    FROM 
        activity_entries a 
    INNER JOIN users1 u 
        ON u.id = a.userid 
    WHERE 
        competitionId = '5216078af3730' 
    GROUP BY 
        a.userid 
    ORDER BY 
        totalPoints DESC
) as tmp

关于mysql - 获取 SQL 结果中的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18828141/

相关文章:

php - MySQL:根据另一个字段添加序列列

php - 在 php 中调整大小后显示图像出错

php - 批处理未插入到表中

php - 将此时间戳插入 MySQL 时间戳列

mysql - WordPress将帖子的最后修改日期更改为发布日期(预定的帖子)

mysql - MySQL 中聚合值的 row_number() 函数

mysql - 如何修复双编码 UTF8 字符(在 utf-8 表中)

mysql - 托管 MVC 3 和 My SQL 像 PHP 和 MySQL 一样便宜

mysql - Vitess MySQL 身份验证不起作用

PHP 从 mysql 中的表中获取数据时出现问题...仅将列名显示为数据