sqlserver怎样实现“每个学校取最新的2、3条,汇合展示这里【满足条件,如1w的流量】”

现有两个表,一个是学校表(school)、一个是帖子表(post),其中帖子表中的schoolid与学校表中的id相关联,帖子表的点击量为(browse),在sql server中怎样实现“每个学校取最新的2、3条,汇合展示这里【满足条件,如1w的流量】”这个查询?

select id,schoolid,browse from
(
select id,schoolid,browse,
ROW_NUMBER() OVER(PARTITION BY schoolid ORDER BY browse DESC) 'rnum'
from post where browse>10000
) as p where p.rnum<3

每个学校取最新的2,3条?这里面肯定还有一个时间字段吧?

select * from
(
select ID,schoolid,流量,
       row_number() over(partition by schoolid order by 流量 desc) 'sll'
 from post where 流量>10000
) as ks where ks.sll<3

你的题目是点击量最多的还是按时间最新的 首先使用**ROW_NUMBER() over(PARTITION by schoolid order by 时间或者是点击量 desc) **进行分组排序 然后把学校表关联进来就好了, 你的应该是sqlserver 2005之后吧 ,如果是2005之前的版本得建立临时表 如果你把表字段全部贴出来,并把自己想要的结果提出来。

select school.* from school s,post p where s.schoolid=p.id and p.browse is 10000 and p.id=1 and p.id=2 order by time(这个是时间字段){降序排序}

SELECT id ,
schoolid ,
schoolname ,
[browse]
FROM ( SELECT id ,
schoolid ,
[browse] ,
ROW_NUMBER() OVER ( PARTITION BY schoolid ORDER BY posttime DESC ) 'rnum'
FROM post
WHERE [browse] >= 10000
) AS a
LEFT OUTER JOIN school ON a.schoolid = b.schoolid
WHERE p.rnum < 3

图片说明