How to select the first N rows of each group?
You can do the counting using a correlated subquery: SELECT b.BookId, a.AuthorId, a.AuthorName, b.Title FROM Author a join Book b on a.AuthorId = b.AuthorId where (select count(*) from book b2 where b2.bookId <= b.BookId and b2.AuthorId = b.AuthorId ) <= 2; For a small database this should be fine. If you create a composite index … Read more