У меня есть две таблицы MySQL следующим образомMySQL ранжирование на основе баллов и время играл
Таблица: забьет
Таблица: пользователь
Мое требование состоит в том, чтобы ранжировать оценку и извлекать, если счет total_score больше некоторого значения (например, рейтинг всех баллов, если total_score меньше 15). Если баллы равны, тогда учитывайте время.
Я написал следующий запрос, чтобы получить строки, включая ранг (я не очень хорошо разбираюсь в SQL-запросах, но я попытался найти способ сделать это - не повезло).
Покушение - 1
SELECT score.total_score,
CONCAT(users.user_first_name,' ', users.user_last_name) AS name,
users.user_email,
FIND_IN_SET(total_score,
(SELECT GROUP_CONCAT(total_score
ORDER BY total_score ASC)
FROM score)) AS rank
FROM score
INNER JOIN users ON score.user_id = users.user_id
WHERE score.total_score > 15
ORDER BY score.total_score DESC LIMIT 10
Покушение - 2
SET @Rank := 0;
SELECT score.total_score,score.time,
CONCAT(users.user_first_name,' ', users.user_last_name) AS name,
users.user_email,
@Rank := @Rank + 1 AS rank
FROM score
INNER JOIN users ON score.score_id = users.user_id
WHERE score.total_score > 15
ORDER BY score.total_score DESC, time ASC LIMIT 10
Обе попытки потерпели неудачу, короче говоря, что я пытался сделать это,
оценки пользователей Ранг по to total_score, учитывая время (есть вероятность иметь одинаковые оценки).
Заранее спасибо.
Как вы присоединяетесь к «score_id» и «user_id»? Разве это не должно быть «ON score.user_id = users.user_id»? – Indrajit
1. См. Нормализацию. 2. Нормализовать вашу схему. – Strawberry
Идентификатор очень рекомендуется удалить столбцы для уровня 2 до 4. И добавив новый столбец «Уровень». Просто установите уровень там и счет. Таким образом, это не имеет значения, если у вас есть 2 уровня или 900 уровней. – ThrowingDwarf