Solución de Carlos muy simplificada y corregida (su solución devolvería las primeras 5 filas, no la última...):
SELECT tB1.idA, tB1.idB, tB1.textB
FROM tableB as tB1
JOIN tableB as tB2
ON tB1.idA = tB2.idA AND tB1.idB <= tB2.idB
GROUP BY tB1.idA, tB1.idB
HAVING COUNT(*) <= 5
En MySQL, puede usar tB1.textB
incluso si es un grupo por consulta, porque está agrupando por idB en la primera tabla, por lo que solo hay un valor único de tB1.textB
para cada grupo...