Следующая публикация: sql: selcting top N записей на группу описывает сложный способ достижения этого без подзапросов.
Он улучшает другие решения, предлагаемые здесь:
Это, однако, не очень. Хорошим решением было бы возможно, если в MySQL были включены функции Window (aka Analytic Functions), но это не так. В трюке, используемой в указанном сообщении, используется GROUP_CONCAT, который иногда описывается как «Функции окна для пользователя для MySQL».