SQL retorna 100 linhas aleatórias para cada idade

Para cada um dos i.Age (0-100), quero retornar 100 linhas aleatórias para cada idade com os dados selecionados. Não tenho certeza se devo usar um loop while para realizar isso ou possivelmente um grupo com um limite de alguma forma? Eu olhei para alguns exemplos diferentes, mas ainda estou bastante confuso.

SELECT, i.name, i.Gender, i.Age, i.MP, b.score
FROM i
INNER JOIN b on b.name=i.name
WHERE i.MP='F'
AND i.gender='F'
AND b.score<=-1
AND i.age = 0
ORDER BY RAND()
LIMIT 100

No momento, a consulta acima funciona, mas retorna apenas 100 linhas aleatórias para os 0 anos de idade. Eu observei alguns exemplos, mas não consigo entender se devo usar um grupo por um loop while ou possivelmente um loop while. Existem mais de 10.000.000 de linhas na tabela.