如上图,是视图view_Articles的部分数据。
现在我想每个类别提取出两条最新的文章,请高手指点下SQL语句写法,或存储过程。
使用排名函数:RANK()
使用排名函数:RANK()
create table ##Product
(
id int,
ProductName nvarchar(20),
ProductType int
)
Create table ##ProductType(
id int,
description nvarchar(200)
)
insert into ##Product values (1,N'C#入门经典',1)
insert into ##Product values (2,N'C#高级编程',1)
insert into ##Product values (3,N'C#技术内幕',1)
insert into ##Product values (4,N'N70',2)
insert into ##Product values (5,N'N73',2)
insert into ##Product values (6,N'N95',2)
insert into ##ProductType values (1,N'图书')
insert into ##ProductType values (2,N'手机')
select * from (SELECT a.id, a.ProductName,b.description,
RANK() OVER (PARTITION BY a.ProductType order by a.id desc) as RANK
FROM ##Product a join ##ProductType b on a.ProductType=b.id
) c
where c.RANK < 3
select * from view_Articles where id > max(id) -2 /
这个不行的话
select * from view_Articles where id > (select max(id) -2 from view_Articles )
你是按什么来分类的?而且又是通过什么知道他是最新的数据?
比如 表名: TableTest 字段:信息,分类,时间
那么实现语句是:
WITH TT AS
(SELECT [信息],rownum = row_number() over(partition by [分类] order by [时间] desc) FROM TableTest )
select [信息] from TT where rownum = 1 or rownum = 2
请参照:http://www.cnblogs.com/scorpioyyy/archive/2008/11/04/1325997.html