Таблица соединения обновления 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 |
+----------+--------+------+