我正在尝试根据此查询的总分来更新包含用户位置的表
$default='0';
mysql_select_db($database_catchapp, $catchapp);
$updateSQL = sprintf("UPDATE competitors SET position= $default= ($default+1) ORDER BY score DESC" );
$Result= mysql_query($updateSQL, $db) or die(mysql_error());
但是当我执行时,它会用 0 更新从第一条记录到最后一条记录的位置。
我期望的是它应该根据总分将位置从 1
更新到最后一条记录
最佳答案
这不是您插入数据库的信息,而是您使用数据库计算和检索的信息。
每个竞争对手都已经将分数输入到数据库中,如果您尝试保存他们的位置,那么每次分数变化时您都需要重新计算并重新保存。
无论如何这都是没有意义的,因为按位置列出它们只是对数据进行排序的一种方式,而对数据进行排序是计算机所擅长的。
如果您运行SELECT * FROM竞争对手ORDER BY Score DESC
,您将获得按排名排列的结果。如果您也需要运行列,请尝试以下操作:
设置@rank = 0;
SELECT *, (SELECT @rank:=@rank + 1) AS 排名 FROM 竞争对手 ORDER BY 分数 DESC
关于php - 使用 PHP 和 MySQL 根据总分自动更新用户位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47743462/