MySQL Rank в случае связей - PullRequest
       9

MySQL Rank в случае связей

0 голосов
/ 18 августа 2011

Мне нужна помощь в работе со связями при ранжировании в MySQL.Например:

ИГРОК |ПУНКТЫ

  • Мэри: 90
  • Боб: 90
  • Джим: 65
  • Кевин: 12

Боби Мэри должны быть на первом месте.Джим должен быть №3.Кевин должен быть № 4.

MySQL:

SET @rank=0;
SELECT @rank:=@rank +1 as rank, player, points FROM my_table

Как я могу изменить инструкцию SELECT, чтобы ранжирование было правильным в случае связей?

Мой реальныйС жизненной проблемой все сложнее, но если я пойму, как решить вышесказанное, то мне следует поставить.

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

Предполагая, что имя уникально

SELECT t1.name, (SELECT COUNT(*) FROM table_1 t2 WHERE t2.score > t1.score) +1
AS rnk
FROM table_1 t1
2 голосов
/ 18 августа 2011
SELECT players.*, COUNT(higher_ranking.id) + 1 AS rank
    FROM players
    LEFT JOIN players AS higher_ranking
        ON higher_ranking.points > players.points
    GROUP BY players.id

В Postgres вы можете использовать оконные функции RANK () для достижения этой цели, что гораздо приятнее.Я не знаю ничего подобного для MySQL.

...