首页 新闻 搜索 专区 学院

sql语句查询记总并分页。

0
悬赏园豆:5 [已解决问题] 解决于 2013-09-27 09:28

现我有一张主题表主题计数表 ThemeNum, 字段:ID (自增) TID(主题表ID),Num(计数),

现在要求就是查询 ThemeNum表 如果遇到TID及主题表ID一样则累加并使用row_number() OVER 分页。

主题计数表

ID TID 数量
1 1 1
1 1 1
1 2 2
1 2 2

要求显示

TID 数量
1 2
2 4

求大神们辅助。这个分页的sql怎么写

something的主页 something | 初学一级 | 园豆:5
提问于:2013-09-25 19:34
< >
分享
最佳答案
0

这...汇总而已啊。

select TId,sum(数量) from T group by TId

求总数量:

 select count(TId) from T group by TId

分页:

select * from (select TId,count(数量),rownum=Row_number() over (order by Tid) from T group by TId) as t
where t.rownum between 1 and 10
收获园豆:5
幻天芒 | 高人七级 |园豆:36910 | 2013-09-25 22:53

如果安装tid来order by确实可以实现,但是如果ID排序就不能达到理想效果,不过这样查询出来确实能达到效果。先谢了

something | 园豆:5 (初学一级) | 2013-09-27 09:26
其他回答(2)
0
    --取出表A中第30到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的
) 面试常考的分页语句
--
第一种 not in --先查询一部分数据排序,排除在外;适合用与sql server 2000及更高版本 select top 10 * from Info where ID not in (select top 30 ID from Info order by ID)order by ID --第二种 先查出一部分数据 排序 用Max找出最大Id 然后将其Max(ID)最大排除在外;适合用与sql server 2000及更高版本 select top 10 * from Info where ID > ( select ISNULL(MAX(ID),0) from ( select top 30 ID from Info order by ID ) a ) order by ID --第三种 row_number --把所有的数据查询出来,进行重新编号,通过where条件进行筛选数据;适用于sql server2005及更高版本 select top 10 * from (select row_number() over (order by ID) as rowId,* from Info)t where rowId>30 --第四种 offset fetch --offset后参数 越过多少条 fetch next后参数 取多少条;适用于sql server2012及其更高的版本 select * from Info order by ID offset (30)row fetch next 10 rows only

博客的一部分,希望帮到你!

秋壶冰月 | 园豆:5692 (大侠五级) | 2013-09-25 22:30

很有启发意义。感谢了

支持(0) 反对(0) something | 园豆:5 (初学一级) | 2013-09-27 09:28
0

没太明白意思 如果只是查询ID和TID相等的个数

x.y. | 园豆:226 (菜鸟二级) | 2013-09-26 10:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册