I have two tables : tableA (idA, titleA)
and tableB (idB, idA, textB)
with a one to many relationship between them. For each row in tableA, I want
Ensure your "B" table has an index on ( idA, idB ) for optimized order by purposes so for each "A" ID, it can quickly have the "B" order descending thus putting the newest to the top PER EACH "A" ID. Using the MySQL variables, every time the "A" ID changes, it resets the rank back to 1 for the next "A" id.
select
B.idA,
B.idB,
B.textB
@RankSeq := if( @LastAGroup = B.idA, @RankSeq +1, 1 ) ARankSeq,
@LastAGroup := B.idA as ignoreIt
from
tableB B
JOIN tableA A
on B.idA = A.idA,
(select @RankSeq := 0, @LastAGroup := 0 ) SQLVars
having
ARankSeq <= 5
order by
B.idA,
B.idB DESC