表结构是这样的
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也不行
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也不行
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)
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)
a.*
from
bj_news_context a
where
(select count(*) from bj_news_context where parent=a.parent and id>=a.id)<=4