rownum - 在 GROUP BY、ORDER BY 查询后自动增加虚拟列

标签 rownum

在发布此之前,我已经对自动增量进行了广泛的研究,但找不到类似的案例:

我有一个查询从主表中提取数据,按 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/

相关文章:

sql - Oracle Rownum = 2 不返回结果

oracle - 连接条件中的 Rownum

sql - 将 rownum 与预排序结果一起使用是否良好,还是应该使用rank?

mysql - 将查询附加到 MySQL 全文查询

java - hibernate hql 和 setMaxResults

java - 使用 jOOQ 选择 rownum/max(rownum)

oracle10g - Oracle 10G - 从 9i 迁移后使用 rownum 的查询停止工作

mysql - 通过消除表中的重复项来显示序列号(rownum)以及 mysql 中的数据?

oracle - HSQLDB ROWNUM与Oracle的兼容性