mysql - 更新用户等级

标签 mysql mariadb

我尝试在单个查询中更新用户的排名,但它因以下错误而崩溃:

ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UPDATE users SET rank = @r:= (@r+1) ORDER BY score DESC' at line 1

我的查询有什么问题吗?

SET @r=0;UPDATE users SET rank = @r:= (@r+1) ORDER BY score DESC

我收到来自 this answer 的查询

我正在 node.js mysql library 上执行此查询.

    db.query('SET @r=0;UPDATE users SET rank = @r:= (@r+1) ORDER BY score DESC', function(err){
        if (err){
            console.log(err);
            return;
        }
        console.log("Ranking updated successfully.");
    });

最佳答案

怎么样:

SET @r=0;UPDATE users SET rank = (@r+1) ORDER BY score DESC

我不确定您为什么要再次重新分配变量。

关于mysql - 更新用户等级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45736395/

相关文章:

php - 如何使用 PHP 比较以 DB 文本形式保存的价格和 HTML 形式保存的价格?

mysql - MySQL 中不同内容类型的评论和点赞

mysql - 如何取回 MySQL/MariaDB 中更新的所有行

mysql - 表的特定字段值的唯一约束

php - 从数据库到可编辑形式的数组

php - 另一个password_verify()问题可能与数据库相关

mysql - 可以识别不同值和最大值的 SQL 查询

mysql - 如何使用内连接和子查询优化 SQL 查询和返回计数

c# - 用户 '' @localhost 的访问被拒绝(使用密码 : no)

mysql - BEFORE UPDATE 触发器阻止所有更新