【发布时间】:2011-03-08 19:19:25
【问题描述】:
有什么方法可以从查询中获取实际的行号?
我希望能够通过一个名为 score 的字段来订购一个名为 League_girl 的表;并返回用户名和该用户名的实际行位置。
我想对用户进行排名,这样我就可以知道特定用户在哪里,即。乔在 200 人中排在第 100 位,即
User Score Row
Joe 100 1
Bob 50 2
Bill 10 3
我在这里看到了一些解决方案,但我尝试了其中的大部分,但没有一个真正返回行号。
我试过这个:
SELECT position, username, score
FROM (SELECT @row := @row + 1 AS position, username, score
FROM league_girl GROUP BY username ORDER BY score DESC)
派生出来的
...但它似乎没有返回行位置。
有什么想法吗?
【问题讨论】:
-
行是文件名还是要按主键排序?
-
在 SQL 中,行号真的不重要。你应该做的是向你的表添加一个自动递增的主键。
-
主键不应该是行标识符,因为它们对于实际行位置不可靠。
-
此外,由于行号是分数的函数,我认为它不是静态值,因此将其设为自动递增值(主键与否)不会给出预期结果。跨度>
-
你可能想保存丑陋的自定义函数,见datamakessense.com/mysql-rownum-row-number-function