2017-08-17 26 views
0

Ich versuche, Benutzer-Rankings in einer einzigen Abfrage zu aktualisieren, aber es stürzt mit diesem Fehler:Aktualisieren des Benutzer Rang

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

Gibt es etwas falsch mit meiner Anfrage?

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

bekam ich die Abfrage von this answer

ich auf einem node.js mysql library diese Abfrage bin ausführen.

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

Wohin führen Sie diese Anweisung aus? Direkt in der Kommandozeile oder in einer Programmiersprache? – Yannici

+0

@Yannici aktualisierte Frage mit Code – user234

Antwort

0

Wie wäre:

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

bin ich nicht sicher, wie, warum Sie wollen würde die var wieder neu zuzuweisen.

+1

Weil er den neuen Wert in @r für den nächsten Benutzer haben möchte;) (Rang 1, Rang 2, Rang 3 ...) – Yannici

+0

Hat nicht funktioniert. Ich denke nicht, dass es um die Abfrage geht, es funktioniert ohne 'SET @ r = 0;', aber Aktualisierungen rangieren als NULL. Ich habe die Frage mit Code aktualisiert. – user234

+0

Mein schlechtes. Das tut mir leid. –

0

Ok, ich habe das Problem gefunden.

Ich habe vergessen, multipleStatements auf True zu setzen, wie in here beschrieben.