表结构是这样的
id      parent     name
1       100        dsjfsdfl
2       100        dsfsd
3       100        dsfsd
4       100        dsfsd
5       101        dsjfsdfl
6       101        dsfsd
7       101        dsfsd
8       101        dsfsd
9       102        dsjfsdfl
10       102        dsfsd
11       102        dsfsd
12       102        dsfsd我想把每个parent_id列的最新的4条给选择出来,但不知道怎么写?高手帮忙我这么写的
select * from [bj_news_context] a where (select count(*) from [bj_news_context] where parent_id=a.parent_id and id<a.id) in (1,2,3,4) and a.parent_id in (100,101,102)
但是这样是把每一个类别的最老的4条给选择出来了,而且ORDER BY ID DESC也不行

解决方案 »

  1.   

    parent_id列 !??在哪儿哦!?try:
    select * from [bj_news_context] a where (select count(*) from [bj_news_context] where parent_id=a.parent_id and id>a.id) in (1,2,3,4) and a.parent_id in (100,101,102)
      

  2.   

    select
        a.*
    from
        bj_news_context a
    where
        id in(select top 4 id from bj_news_context where parent=a.parent order by id desc)
      

  3.   

    select
        a.*
    from
        bj_news_context a
    where
        (select count(*) from bj_news_context where parent=a.parent and id>=a.id)<=4