使用分组依据和多列获取 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 大新闻等
我已经通读了这里的每个相关问题,但无法找出或修改已接受的答案来完成我想要的。
我有两个表:
新闻: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 大新闻等