使用分组依据和多列获取 SQL 中的两个连接表

Fetching Two Joined Tables in SQL With Group By and Multiple Columns

我已经通读了这里的每个相关问题,但无法找出或修改已接受的答案来完成我想要的。

我有两个表:

新闻:Id、标题、CategoryId 新闻类别:Id、标题

我想列出所有 NewsCategories 并在同一个 Sql 查询中包含属于该类别的 10 行新闻。

我现在正在处理这个查询:

Select C.Id As CategoryId, C.Title As CategoryTitle, N.Id, N.Title
From NewsCategories C, News N
Where N.CategoryId In (C.Id)
Order By C.Id Desc

但无法弄清楚如何在不限制 NewsCategories 的情况下限制 "News" 返回的数量。

只需使用OUTER APPLY:

SELECT C.Id AS CategoryId, C.Title AS CategoryTitle, N.Id, N.Title
From NewsCategories C
OUTER APPLY (
   SELECT TOP 10 *
   FROM News 
   WHERE CategoryId = C.Id
) AS N
ORDER BY C.Id Desc

根据您的要求和 News table 架构,您可以对 OUTER APPLY 子查询执行额外的 ORDER BY 以获取 10每个类别的最新新闻或按字母顺序排列的 10 大新闻等