MySQL выбрать максимальное значение для группы и всю строку с этим значеним

MySQL 5.7 Покажите как правильно сделать выборку из таблицы.
Нужно для каждого студента оставить преподавателя у которого counter максимальный

К примеру у меня есть таблица

stud   id_prepod  counter
иванов   1111      1
иванов   2222      4
петров   1111      2 

В результате я хочу видеть иванова с преподавателем 2222 так как у него максимальный counter и петрова

stud   id_prepod  counter
иванов   2222      4
петров   1111      2 

Ответы (2 шт):

Автор решения: Novitskiy Denis

Можно найти с помощью такого запроса

select s1.*
from student s1
left join student s2 on s1.stud=s2.stud and s2.counter>s1.counter
where s2.id_prepod is null

Или же вариант с подзапросом, который Вы же и использовали уже ранее в другом вопросе - тут

select s1.stud, s1.id_prepod, s1.counter
from student s1
join (select s2.stud,  max(s2.counter) as counter
from student s2 group by s2.stud) s3 
on s1.stud=s3.stud and  s1.counter=s3.counter

Тут фиддл

→ Ссылка
Автор решения: Маруся

Препод выбирается первый попавшийся в таблице, удовлетворяющий условию макс(счётчик)

SELECT 
   stud AS [Student], 
   First(idp) AS [id_prepod],
   Max(cnt) AS [Counter]
FROM T3
GROUP BY T3.stud;
→ Ссылка