贝网博客

我的分类
流水记事
源码下载
Asp.net
其它
数据库
Javascript
.Net技术
我的相册
友情链接
博客园
CSDN博客
Start0
最新回复
fasdfasdf
[:..
lz这个东西好厉害,我..
哈哈,好照片
不错,以前一直用黄色..
终于找到支持ff的修正..
终于找到支持ff的修正..
新鲜性
看看,试试,好不好使。
好东西一起学习[:img0..
分类 =》数据库
SqlServer2005中应用ROW_NUMBER函数取得每个分类下的n条记录
发表于:2011-04-13 10:14:45
更新于:2011-11-18 10:34:38

在业务中,有时会有这种需求,即每种分类取2条记录,比如有图书表,在首页要求每种图书显示2本
表结构和数据如下:

id bookname categoryId
1 十万个为什么 1
2 钢铁怎么烧成的 1
3 C#入门经典 2
4 C#高级编程 2
5 C#编程参考 2
6 人生 1

 现在要在categoryId为1的找2本,categoryId为2的找2本,按id逆序,sql如下:
SELECT * FROM (SELECT 图书表.*, ROW_NUMBER() OVER(PARTITION BY categoryId ORDER BY id desc) rn FROM 图书表) b WHERE rn < 3

返回数据如下:

id bookname categoryId
2 钢铁怎么烧成的 1
4 C#高级编程 2
5 C#编程参考 2
6 人生 1

发表评论
名称(*):
邮箱:
正文:

©2008 Beinet.cn 版权所有