Я пытаюсь выбрать ранг студента в таблице по идентификатору студента. Код ниже поможет объяснить мою проблему. Имя таблицы - Student, в ней есть идентификаторы и метки.Получение ранга по id в mysql
SELECT id, marks,
@curRank := IF(@prevVal=marks,@curRank,@studentNumber) AS rank,
@studentNumber := @studentNumber + 1 as studentNumber,
@prevVal:=marks
FROM Student,(SELECT @curRank :=0, @prevVal:=null, @studentNumber:=1) r
ORDER BY marks DESC where id='001';
Код выше может выбрать весь список ID студента и их ранга без where id='001'
, но я хочу, чтобы выбрать каждый студент ранг по его идентификатору. Я попытался выше коды, чтобы исправить мою проблему, но безрезультатно, пожалуйста, может кто-нибудь help.This как моя таблица выглядит, когда я выполнить приведенный выше код без where id='001'
id marks rank
002 92 1
003 92 1
001 80 3
Я хочу, чтобы выбрать метки и ранг, где ID = 001, как на выходе ниже
id marks rank
001 80 3
Не могли бы вы отобразить несколько строк из таблицы «Студент» плюс ожидаемый результат? –
Пожалуйста, у меня есть обновленный вопрос, надеюсь, что это поможет. Спасибо – George
Это будет возможно только с временными таблицами, насколько я могу видеть. Сначала вам нужно вычислить столбец рангов в таблице temp, а затем выбрать одного студента. Сужение результата с помощью где в противном случае опускает ранг. –