SQL Count和TOP在同一个Query中

时间:2016-01-25 18:53:04

标签: sql-server

我的SQL数据库包含与np_id报纸相关的文章表。

文章表(id,title,date,newspaperID)
报纸表(报纸ID,名称,标识)

我想获取新闻报道列表,包括每篇论文的总数和每篇报纸的最新文章,我想得到如下结果:

newspapre1,总文章数(4篇文章),“我是最新文章”,2015年1月25日
newspaper2,7篇文章,“我是最新的报纸2”,2015年1月23日

进行此类查询的最佳做法是什么?

1 个答案:

答案 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