Таблица соединения обновления MySQL 5.7 не работает должным образом, но версия 5.5

При недавнем обновлении MySQL с 5.5 до 5.7 я обнаружил, что некоторые SQL не работают должным образом; тогда я нашел ответ на этот вопрос: /questions/19431712/obnovite-rejting-v-tablitse-mysql/19431722#19431722, но это не работает на MySQL 5.7

Прецедент:

CREATE TABLE player (
   playerID int,
   points int,
   rank int
);

INSERT INTO player VALUES (1, 150, NULL);
INSERT INTO player VALUES (2, 100, NULL);
INSERT INTO player VALUES (3, 250, NULL);
INSERT INTO player VALUES (4, 200, NULL);
INSERT INTO player VALUES (5, 175, NULL);

Обновите рейтинг для всех игроков в зависимости от количества очков:

UPDATE   player
JOIN     (SELECT    p.playerID,
                    @curRank := @curRank + 1 AS rank
          FROM      player p
          JOIN      (SELECT @curRank := 0) r
          ORDER BY  p.points DESC
         ) ranks ON (ranks.playerID = player.playerID)
SET      player.rank = ranks.rank;

затем проверьте результат. Результат MySQL 5.5:

SELECT * FROM player ORDER BY rank;

+----------+--------+------+
| playerID | points | rank |
+----------+--------+------+
|        3 |    250 |    1 |
|        4 |    200 |    2 |
|        5 |    175 |    3 |
|        1 |    150 |    4 |
|        2 |    100 |    5 |
+----------+--------+------+

Результат MySQL 5.7.19

SELECT * FROM player ORDER BY rank;

+----------+--------+------+
| playerID | points | rank |
+----------+--------+------+
|        1 |    150 |    1 |
|        2 |    100 |    2 |
|        3 |    250 |    3 |
|        4 |    200 |    4 |
|        5 |    175 |    5 |
+----------+--------+------+

0 ответов

Другие вопросы по тегам