sql 分组查询 分组查询查询每组的前几条数据

如题所述

sqlserver:
select * from (
select *,row_number() over(partition by 分组列 order by 组内排序列) as rn from table
) as a where rn<=2追问

这个我知道,我也是这么写的,但是开始的时候用的是id,后来换条件后两个表级联查询大概不到十万条数据,就挂了,查 了俩多小时才查出来

追答

首先给你的table分组列、排序列,以及输出列加索引,输出列加覆盖索引
若此查询仍很慢,将内部查询select into到临时表,给临时表中rn创建索引
输出列创建覆盖索引

追问

能具体点吗,我sql不咋地,后来我用的是ajax异步查的,先查出分类,在根据分类区查下边的内容

追答

加索引是数据库上的操作,如果你的表数量很大,加索引的效果会非常显著
再者你查询的时候何必要输出10w条数据呢,每次只输出一部分就行了啊

追问

好的,我试试

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-21
where rownum<=行数
第2个回答  2012-09-21
where rownum <= 数字 你懂了吗?
相似回答