Sql server sql server:在子查询中循环,并在与子查询中的evry行对应的主查询中限制结果

Sql server sql server:在子查询中循环,并在与子查询中的evry行对应的主查询中限制结果,sql-server,subquery,Sql Server,Subquery,我正在stackoverflow sqlquery portal上工作。我想有前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

我正在stackoverflow sqlquery portal上工作。我想有前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个顶级标签。请告诉我如何迭代子查询。

像这样尝试:查询将从sys.objects中提取每种类型的三个对象

将此发布到一个空的查询窗口,以适应您的需要

WITH TypesToGroup AS
(
    SELECT DISTINCT type_desc FROM sys.objects 
)
select * 
from TypesToGroup
cross apply
(
    select top 3 x.*
    from sys.objects as x
    where x.type_desc=TypesToGroup.type_desc
) AS ThreeOfEach

成功了。谢谢,如果我有足够的声誉,我会投更高的票。@AkhilBatra,你好,很高兴读到这篇文章。我推了你一点;-帮助你帮助我-
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