php - 使用 PHP 和 MySQL 根据总分自动更新用户位置

标签 php mysql

我正在尝试根据此查询的总分来更新包含用户位置的表

$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/

相关文章:

javascript - 如何在将 webrtc 拍摄的视频发送到服务器之前对其进行压缩?

php - TypeError : data. isbn 未定义

php - 如何管理基于 AJAX 的 'like/dislike' 功能?

php - 如何在php中打印HTML代码

php - FetchAll(PDO::FETCH_ASSOC) 没有返回任何内容

php - 将php数组插入mysql表

php - Laravel 5 - 迁移中的复合键索引

php - 使用 Xdebug 和 Zend Framework 进行交互式调试和断点

php - 将选择表单的值保存到mysql数据库

MySQL 使用 Kotlin 连接表暴露错误 : "no matching primary/foreign key pair"