Retrieve 2 last posts for each category.

Posted by Savageman on Stack Overflow See other posts from Stack Overflow or by Savageman
Published on 2009-12-15T13:39:42Z Indexed on 2010/04/18 1:23 UTC
Read the original article Hit count: 465

Hello,

Lets say I have 2 tables: blog_posts and categories. Each blog post belongs to only ONE category, so there is basically a foreign key between the 2 tables here.

I would like to retrieve the 2 lasts posts from each category, is it possible to achieve this in a single request? GROUP BY would group everything and leave me with only one row in each category. But I want 2 of them.

It would be easy to perform 1 + N query (N = number of category). First retrieve the categories. And then retrieve 2 posts from each category.

I believe it would also be quite easy to perform M queries (M = number of posts I want from each category). First query selects the first post for each category (with a group by). Second query retrieves the second post for each category. etc.

I'm just wondering if someone has a better solution for this. I don't really mind doing 1+N queries for that, but for curiosity and general SQL knowledge, it would be appreciated!

Thanks in advance to whom can help me with this.

© Stack Overflow or respective owner

Related posts about sql

Related posts about mysql