在发布此之前,我已经对自动增量进行了广泛的研究,但找不到类似的案例:
我有一个查询从主表中提取数据,按 player_id 分组并按点 desc 排序,因此创建了排名输出。我的目标是进行相同的查询,一旦完成聚合和排序数据,创建一个新列“排名”并自动递增它,以便显示 1、2、3 等,因为所有内容都已按玩家分组并按点 DESC 排序。
多谢你们。
源表示例:
player_id-----------积分-----
---1-------5----------
---1--------10---------
---1-------5---------
---2-------20---------
---2-------5---------
根据此示例的所需输出:
排名 ------player_id-----score------
---- 1 ----------2------------25分 ---------
---- 2 ----------1------------20分 ---------
编辑
Rownum 做得很好,不需要自动增量虚拟列!请参阅下面 Mutnowski 接受的答案。
最佳答案
尝试这个
SELECT @rownum:=@rownum+1 AS ‘rank’, Player_ID, Points FROM (SELECT Player_ID, SUM(Points) AS 'Points' FROM tblScores GROUP BY Player_ID ORDER BY Points DESC) AS foo, (SELECT @rownum:=0) AS foo2
我认为您需要运行一个查询来获得没有排名的结果,然后首先运行另一个查询来选择所有并添加排名
关于rownum - 在 GROUP BY、ORDER BY 查询后自动增加虚拟列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10217148/