Вот реальная проблема с запросом MySQL для noobish, который у меня есть.MySQL Выбор неправильного значения столбца в группе По запросу
У меня есть таблица с высокими оценками в игре, которую я пишу. В баре с высоким балом записывается имя, уровень и оценка. В db много дубликатов. Например:
Name | Level | Score | Timestamp (key)
Bob 2 41 | 1234567.890
Bob 3 15 | 1234568.890
Bob 3 20 | 1234569.890
Joe 2 40 | 1234561.890
Bob 3 21 | 1234562.890
Bob 3 21 | 1234563.890
Я хочу вернуть «высокий уровень, достигнутый» список высокого балла, с выходом аналогичен:
Name | Level | Score
Bob 3 21
Joe 2 40
SQL-запросы В настоящее время я использую:
SELECT *, MAX(level) as level
FROM highscores
GROUP BY name
ORDER BY level DESC, score DESC
LIMIT 5
Однако это не совсем сработает. Вывод поля «Счет» всегда кажется случайным образом вытащен из группы, вместо того, чтобы принимать соответствующий балл для достижения самого высокого уровня. Например:
Name | Level | Score
Bob 3 41
Joe 2 40
Боб никогда не получал 41 очко на уровне 3! Как я могу это исправить?
Спасибо за объяснение Эрика - это общий смысл для меня, но код не совсем работает, и я не могу определить, где проблема. Код теперь последовательно возвращает счет Боба за его низкий уровень, а не его максимальный! Прежде, чем это показалось первым балом в базе данных, что было плохо. Так что это намного лучше - просто еще не совершенно :) –
Я думаю, вам нужно еще одну строку в конце: GROUP BY h1.Name, h1.Level – bernie
Вы правы - не копировали все это, когда я вставлял он в. Спасибо! – Eric