我已经阅读了这里的每个相关问题,但无法弄清楚或修改已接受的答案以实现我想要的目标。
我有两张桌子:
新闻:Id,Title,CategoryId NewsCategory:Id,Title
我想列出所有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。
答案 0 :(得分:1)
只需使用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
表架构,您可以在ORDER BY
子查询中执行额外的OUTER APPLY
,例如,获取每个类别的10条最新消息或按字母顺序排列的10条最新消息