如何在基于分数的mysql数据库的RANK列中保存排名(从sql查询中找到)?

时间:2015-11-19 13:49:32

标签: php mysql sql database

我已经制作了一个简单的php表单,用户可以在其中插入存储到mysql数据库的名称和分数。

当用户提交表单时,他们的输入被插入到数据库中的SCORES到NAME和SCORE列的表中。还有一个名字RANK。

现在我想在php中创建搜索页面,以便按名称查找分数和排名(基于分数)。

我有查询排名的SQL查询,但它不会永久存储数据库的排名。

SET @rnk=0;
SET @rank=0;
SET @curscore=0;
SELECT score,NAME,rank 
FROM (SELECT AA.*,BB.ID,
        (@rnk:=@rnk+1) rnk,
        (@rank:=IF(@curscore=score,@rank,@rnk)) rank,
        (@curscore:=score) newscore
      FROM (SELECT * 
            FROM (SELECT COUNT(1) scorecount,score 
                  FROM scores
                  GROUP BY score) AAA
            ORDER BY score DESC) AA 
      LEFT JOIN scores BB USING (score)) A;

我可以做一些事情来将排名存储到数据库中,这样我就可以从搜索页面中找到更多的内容,如果将新记录插入数据库,那么得分应该刷新。??

0 个答案:

没有答案