1

我已经找到了大量关于这个主题的信息,但是它超载了。我似乎无法准确找到我正在寻找的解决方案,我找到的只是一般的东西。

我有一个这样的 mySQL 表设置:rank | 姓名 | 分数

android 应用程序在插入时只知道名称和分数。我使用 php 和 httppost 来插入数据。我知道该怎么做。我想要做的是根据分数插入数据,并根据分数自动分配排名。

假设我已经在数据库中有这些值:

  1. 蒂夫 1000
  2. 艾伦 800

我想插入值“Jake 900”

我如何得到结果表:

  1. 蒂夫 1000
  2. 杰克 900
  3. 艾伦 800

最好我不希望手机或平板电脑对数据进行排序,因为我知道如何下载表格、插入信息、使用它并再次上传,但我不希望服务暂停一段时间即使它在后台。

解决方案?

4

2 回答 2

4

不对表进行排序,对查询结果进行排序:

SELECT username, score FROM yourTable ORDER BY score DESC

请注意:如果您希望 mySql 添加排名列:

SET @rank = 0, @prev_val = NULL; 
SELECT rank, username, score 
      FROM (SELECT @rank := IF(@prev_val=score,@rank,@rank+1) AS rank,
                   username AS username,
                   @prev_val := score AS score FROM yourTable  ORDER BY score DESC)  
        AS result 

不要将排名存储在表中,因为如果这样做,则每次插入新分数时都需要更新表中每个较低排名的行。

于 2011-06-12T13:01:29.530 回答
2

为什么不在scoreSQL 查询中使用“ORDER BY DESC”来获取结果?

于 2011-06-12T13:03:05.490 回答