Как переписать этот запрос, не задавая переменную пользователя внутри выражений устарела предупреждение - PullRequest
0 голосов
/ 18 апреля 2020

Как мне переписать этот запрос, чтобы он не приводил к настройке пользовательских переменных внутри выражений, устарело предупреждение?

SET @i=0;
            SELECT battleId, userId,score,  @i:= @i+1 AS myRank 
             FROM battleparticipants  WHERE battleId=2 AND userId="gkfurcwsi033qzxg0u2bmj1ekebsklej"
             ORDER BY score DESC

Nodejs mysql библиотека выдает ошибку из-за этого события, хотя mysql bench просто выдает мне предупреждение.

1 Ответ

2 голосов
/ 18 апреля 2020

В MySQL 8.x вы можете использовать оконную функцию ROW_NUMBER().

Например:

SELECT 
  battleId,
  userId,
  score,
  row_number() over(order by score desc) as myRank 
FROM battleparticipants  
WHERE battleId = 2 AND userId = "gkfurcwsi033qzxg0u2bmj1ekebsklej"
ORDER BY score DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...