我正在 stackoverflow sqlquery 门户工作。我想要拥有最大帖子数的前 1000 个标签。对于每个标签,需要 60 个以该标签作为标签的帖子的 id。所以我需要遍历所有 100 个标签,并获取与它们链接的前 60 个帖子。请有人帮忙。
她是我的sql语句。
SELECT Top 60 PostId,ok.Id
FROM PostTags as test
INNER JOIN (SELECT TOP 50
Id,Count
FROM Tags
ORDER BY Tags.Count DESC) as ok
ON ok.Id = test.TagId
但它只返回 60 个帖子,但每个顶部标签我需要 60 个帖子。请告诉我如何迭代子查询。
最佳答案
WITH CTEM AS
(
SELECT TOP 100 T.ID
FROM Tags T ORDER BY T.[COUNT] DESC
),
CTE as
(
SELECT P.POSTID,T.ID
,ROW_NUMBER() OVER(PARTITION BY T.ID ORDER BY P.POSTID DESC) AS RN
FROM PostTags P
INNER JOIN CTEM T ON P.TAGID = T.ID
)
SELECT * FROM CTE WHERE RN<=60
关于sql-server - SQL服务器: looping through a subquery and limting result in main query corresponding to evry row in subquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32963028/