mysql - 从每个类别中选择第二个博客

时间:2013-05-21 07:03:03

标签: mysql each categories record

如何从php mysql中的每个类别获得第二篇帖子?

如果我有一张表格如下:

post_id  |   cate_id
--------------------

   1     |      2
   2     |      4
   3     |      2
   4     |      1
   5     |      1
   6     |      3
   7     |      4
   8     |      3
   9     |      5
   10    |      5

期待结果如下:

post_id  |   cate_id 
--------------------

    5    |     1
    3    |     2
    8    |     3
    7    |     4
    10   |     5

感谢。

2 个答案:

答案 0 :(得分:1)

select t.cate_id,min(t.post_id)
from (select cate_id, min(post_id) post_id from foo group by 1) firsts
inner join foo t on t.cate_id=firsts.cate_id and t.post_id > firsts.post_id
group by 1;

假设:

mysql> select cate_id, group_concat(post_id order by post_id) from foo group by 1;
+---------+----------------------------------------+
| cate_id | group_concat(post_id order by post_id) |
+---------+----------------------------------------+
|       0 | 0,1,3,4,7                              |
|       1 | 0,1,2,4,6,8,9                          |
|       3 | 7,11                                   |
|       4 | 2,3                                    |
|       5 | 1,3,9                                  |
|       6 | 0,2,5,6,7,8,9                          |
|       7 | 0,2                                    |
|       8 | 0,1,4,6,7,8,9                          |
|       9 | 1,2                                    |
+---------+----------------------------------------+

产生

mysql> select t.cate_id,min(t.post_id) from (select cate_id, min(post_id) post_id from foo group by 1) firsts inner join foo t on t.cate_id=firsts.cate_id and t.post_id > firsts.post_id group by 1;
+---------+----------------+
| cate_id | min(t.post_id) |
+---------+----------------+
|       0 |              1 |
|       1 |              1 |
|       3 |             11 |
|       4 |              3 |
|       5 |              3 |
|       6 |              2 |
|       7 |              2 |
|       8 |              1 |
|       9 |              2 |
+---------+----------------+

答案 1 :(得分:0)

SELECT MAX(post_id) post_ID, cate_id
FROM table1
GROUP BY cate_id