这是我的表结构,
create table ArticleTbl
(
ArticleID bigint identity(1,1),
ProductID int ,
ArticleName varchar(100),
PubDate datetime,
AuthorName varchar(50),
AuthorImage bit,
HtmlValues nvarchar(max)
)
这里productid
1=creditcard,2=prepaidcard,3 saving account,.........
每个productid都有多行记录, 我希望一次性选择每个产品的最新2条记录,而不是每次都去数据库。
我的程序现在就像..
create proc USP_GetArticle_ByProduct(@ProductID int) as
select top(2) * from ArticleTbl where ProductID=@ProductID
如果我使用这个程序,每个productid我必须去数据库...
如何使用查询????
获取所有产品(最新2条记录)答案 0 :(得分:2)
SELECT
*
FROM
(
SELECT
/*Random order per product*/
ROW_NUMBER() OVER (PARTITION BY ProductID ORDER BY NEWID() ) AS Ranking,
*
FROM
ArticleTbl
) foo
WHERE
foo.Ranking <= 2
答案 1 :(得分:0)
我认为这是在sql server上的,是吗?
如果是这样,你可以这样做......
select a1.*
from Articletbl a1
where a1.articleid in
(select top 2 a2.articleid
from ArticleTbl a2
where a2.productid = a1.productid
order by a2.articleid DESC)
order by a1.ProductID