Hodně zjednodušené a opravené řešení Carlos (jeho řešení by vrátilo prvních 5 řádků, ne posledních...):
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
V MySQL můžete použít tB1.textB
i když je seskupena podle dotazu, protože seskupujete podle idB v první tabulce, takže existuje pouze jedna hodnota tB1.textB
pro každou skupinu...