我正在设法解决一个查询问题,但我只是想不通。如果有人给我一个指针,我将不胜感激。作为我要实现的目标的简单示例,我在数据库中有这些记录
Score|Ranking ------------- 100 |0 200 |0 300 |0
我希望“排名”字段根据得分最高的人包含1,2,3,因此结果应为:
Score|Ranking ------------- 100 |3 200 |2 300 |1
目前,我正在为所有这些记录做一个for next循环,但是鉴于现实情况可能是几千个-可能要花很长时间!有没有人对魔术查询有一个想法,可以一口气做到这一点?
在MySQL中,您可以 使用row_number 。
这是在中使用它的示例SELECT:
SELECT
select @rownum:=@rownum+1 ‘rank’, p.* from player p, (SELECT @rownum:=0) r order by score desc;
如果INSERT INTO使用SELECT这样的话,您将获得排名。
INSERT INTO