Начиная с этих примеров.
1 ранг mysql по значению столбца, сгруппированному по значению столбца
2 Несколько рангов в одной таблице
Они объясняют, как вычислить ранг, сгруппированный по значению столбца. В моем случае отправить
Мне нужно обновление столбца "rank" вместо выбора
| iduser | ship | score | rank |
+--------+-------+-------+-------+
| 25 | 1 | 7 | 0 |
| 25 | 3 | 21 | 0 |
| 25 | 4 | 30 | 0 |
| 12 | 9 | 23 | 0 |
| 25 | 9 | 18 | 0 |
| 21 | 9 | 5 | 0 |
Необходимо обновить:
| iduser | ship | score | rank |
+--------+-------+-------+-------+
| 25 | 1 | 7 | 1 |
| 25 | 3 | 21 | 1 |
| 25 | 4 | 30 | 1 |
| 12 | 9 | 23 | 1 |
| 25 | 9 | 18 | 2 |
| 21 | 9 | 5 | 3 |
Это запрос выбора
SELECT iduser,
ship,
score,
(
CASE ship
WHEN @curShip
THEN @curRow := @curRow + 1
ELSE @curRow := 1 AND @curShip := ship END
) AS rank
FROM ship_stats,
(SELECT @curRow := 0, @curShip := '') r
ORDER BY ship DESC, score DESC;