[英]Fetching Two Joined Tables in SQL With Group By and Multiple Columns
我已經閱讀了這里的每個相關問題,但無法弄清或修改接受的答案來完成我想要的。
我有兩個表:
新聞:ID,標題,類別ID新聞類別:ID,標題
我想列出所有NewsCategories並在同一Sql查詢中包括屬於該類別的News的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的情況下,無法弄清楚如何限制返回的“新聞”的數量。
只需使用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
表模式,您可以在OUTER APPLY
子查詢上執行附加的ORDER BY
,例如,獲取每個類別的10個最新新聞或按字母順序排列的10個熱門新聞,等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.