set @artist = ''; set @num = 1; select * from ( select c.name, c.artist, @num := if(@artist = c.artist, @num + 1, 1) as row_number, @artist := s.artist as dummy from cds as c ) as results where results.row_number <= 5; #### my $rs = $schema->resultset('cds'); $rs = $rs->search({ genre => 'rock' }); #### $rs = $rs->limit_per_artist( 5 );