Sql server 同一查询中的SQL计数和TOP

Sql server 同一查询中的SQL计数和TOP,sql-server,Sql Server,我有一个SQL数据库,其中包含一个文章表,该文章表通过np_id与报纸表相关 文章表(id、标题、日期、报纸id) 报纸桌(报纸ID、名称、徽标) 我想得到新闻报纸的列表,包括每家报纸的总文章数和每家报纸的最新文章,我想得到如下结果: 新闻稿1,文章总数(4篇),“我是最新的文章”,2015年1月25日 报纸2,7篇文章,“我是报纸2的最新版本”,2015年1月23日 进行此类查询的最佳实践是什么 如果文章的id是一个递增的数字,而不是唯一标识符或其他定制id,则可以使用此查询 ;WITH ct

我有一个SQL数据库,其中包含一个文章表,该文章表通过np_id与报纸表相关

文章表(id、标题、日期、报纸id)
报纸桌(报纸ID、名称、徽标)

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

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


进行此类查询的最佳实践是什么

如果文章的id是一个递增的数字,而不是唯一标识符或其他定制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不是一个递增的数字,那么查询将变得更复杂,您将需要以下选项之一

也看看这里

如果您使用SQL Server 2012+,您可能会发现这本书也很有趣

这里是一个很好的起点。如果两篇文章的日期相同,并且是最新的呢?您将如何选择更新的?这对于获取最大文章id来说是一个令人惊讶的好点,但是在内部连接必须但是(来自文章内部连接报纸)之前没有键入。非常感谢。是的,当然,我只是直接在这里键入了,将编辑:)