gpt4 book ai didi

sql-server - 在 MS SQL Server 中为每个类别返回 5 篇最新文章

转载 作者:行者123 更新时间:2023-12-04 23:53:24 24 4
gpt4 key购买 nike

假设我有一张 table Articles在具有列 ID INT, Title VARCHAR(100), CatID INT, Posted DATETIME 的 SQL Server 2008 数据库上.

要获取特定类别的 5 篇最新文章,我可以这样做。

SELECT TOP (5) * FROM Articles WHERE CatID = @CatID ORDER BY Posted DESC

但是如果我想要每个类别的 5 篇最新文章怎么办?我知道我可以为每个类别重复上面的查询,但是有什么方法可以执行单个查询来返回每个类别的 5 篇最新文章?

编辑:

这是我用来返回带有 @SectionID 部分的 5 篇最新文章的实际查询。根据我使用的实际术语,这是我分组依据的“部分”,而不是“类别”。

SELECT TOP (5) *
FROM Article
INNER JOIN Subcategory on Article.ArtSubcategoryID = Subcategory.SubID
INNER JOIN Category on Subcategory.SubCatID = Category.CatID
INNER JOIN section ON Category.CatSectionID = Section.SecID
WHERE (Section.SecID = @SectionID)
ORDER BY Article.ArtUpdated DESC

编辑 2:

这是我根据此处的评论提出的查询。似乎工作正常。

SELECT  *
FROM (
SELECT Article.*,
ROW_NUMBER() OVER (PARTITION BY SecID ORDER BY ArtUpdated DESC) AS rn
FROM Article
INNER JOIN Subcategory on Article.ArtSubcategoryID = Subcategory.SubID
INNER JOIN Category on Subcategory.SubCatID = Category.CatID
INNER JOIN section ON Category.CatSectionID = Section.SecID
) q
WHERE rn <= 5

最佳答案

SELECT  *
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY CatId ORDER BY Posted DESC) AS rn
FROM Articles
) q
WHERE rn <= 5

关于sql-server - 在 MS SQL Server 中为每个类别返回 5 篇最新文章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5356938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com