我的SQL数据库包含与np_id报纸相关的文章表。
文章表(id,title,date,newspaperID)
报纸表(报纸ID,名称,标识)
我想获取新闻报道列表,包括每篇论文的总数和每篇报纸的最新文章,我想得到如下结果:
newspapre1,总文章数(4篇文章),“我是最新文章”,2015年1月25日
newspaper2,7篇文章,“我是最新的报纸2”,2015年1月23日
进行此类查询的最佳做法是什么?
答案 0 :(得分:0)
如果文章的ID是一个越来越多的数字而不是uniqueidentifier或其他一些自定义ID,您可以使用此查询。
;WITH cte AS (
SELECT Newspaper.newspaperid,
COUNT(1) as TotalArticles,
MAX(Article.Id) AS LastArticleId
FROM Newspaper
INNER JOIN Article ON Article.newspaperid = Newspaper.newspaperID
GROUP BY Newspaper.newspaperid
)
SELECT * FROM Article
INNER JOIN cte ON Article.Id = cte.LastArticleId
如果文章ID不是越来越多的数字,则查询会变得更复杂,您需要以下其中一项
Retrieving the last record in each group
另请看这里 Grouping and counting rows by value until it changes
如果您使用SQL Server 2012+,您可能会发现此阅读很有趣 https://msdn.microsoft.com/en-us/library/hh231517.aspx