2017-08-17 73 views
0

我想更新用户的排名在一个单一的查询,但它崩溃,出现此错误:更新用户排名

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."); 
    }); 
+0

你在哪儿执行这条语句?直接在命令行或编程语言中? – Yannici

+0

@Yannici更新的问题代码 – user234

回答

0

如何:

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

我不知道是为什么,你会想再次重新分配的变种。

+1

因为他想在@r中为下一个用户获得新的价值;)(等级1,等级2,等级3 ...) – Yannici

+0

没有工作。我不认为它是关于查询的,它在没有'SET @ r = 0;'的情况下工作,但更新等级为NULL。我用代码更新了这个问题。 – user234

+0

我的不好。对于那个很抱歉。 –

0

好吧,我发现了这个问题。

我忘记将多个语句设置为true,如here中所述。