sql 分组查询 分组查询查询每组的前几条数据
展开全部
sqlserver:
select * from (
select *,row_number() over(partition by 分组列 order by 组内排序列) as rn from table
) as a where rn<=2
select * from (
select *,row_number() over(partition by 分组列 order by 组内排序列) as rn from table
) as a where rn<=2
更多追问追答
追问
这个我知道,我也是这么写的,但是开始的时候用的是id,后来换条件后两个表级联查询大概不到十万条数据,就挂了,查 了俩多小时才查出来
追答
首先给你的table分组列、排序列,以及输出列加索引,输出列加覆盖索引
若此查询仍很慢,将内部查询select into到临时表,给临时表中rn创建索引
输出列创建覆盖索引
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询