You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并两个SQL查询从SEDE获取热门问题及对应最高得分答案

SEDE热门问题及对应最高赞答案合并查询实现

UNION 仅适用于合并结构一致的上下行结果集,无法实现横向追加关联字段的需求,你可以通过公用表表达式(CTE)+APPLY 关联的方式实现需求,完整可运行代码如下:

WITH HotQuestions AS (
    SELECT TOP 10
        'https://stackoverflow.com/questions/' + CONVERT(VARCHAR, Posts.Id) as url,
        (ViewCount / (-DATEDIFF(DAY, GETDATE(), CreationDate))) AS ave_views_per_day,
        Body as QUESTION,
        Posts.Id,
        Title
    FROM
        Posts
    LEFT JOIN 
        PostTags ON Posts.Id = PostTags.PostId
    LEFT JOIN 
        Tags ON PostTags.TagId = Tags.Id
    WHERE 
        TagName IN ('##tag##')
        AND ViewCount > 10000
    ORDER BY 
        ave_views_per_day DESC
)
SELECT 
    q.*,
    ans.HighestScoringAnswer
FROM HotQuestions q
OUTER APPLY (
    SELECT TOP 1 
         Body AS HighestScoringAnswer
     FROM 
         (SELECT p.Body, 
                 DENSE_RANK() OVER (ORDER BY p.Score DESC) Rank 
          FROM Posts p 
          WHERE p.ParentId = q.Id 
            AND p.PostTypeId = 2 -- 确保匹配的是答案类型内容
         ) x
     ORDER BY Rank ASC
) ans

关键逻辑说明

  • 先通过CTE HotQuestions 存储你原有逻辑查询得到的TOP10热门问题结果,保留所有你需要的字段
  • 不需要手动传递##QuestionId##参数,OUTER APPLY操作会自动将每行热门问题的Id传入子查询的p.ParentId = q.Id过滤条件,逐行匹配对应问题的最高得分答案
  • OUTER APPLY会保留无答案的问题记录,对应HighestScoringAnswer字段值为NULL;如果你需要仅保留有对应答案的问题,可将OUTER APPLY替换为CROSS APPLY
  • 子查询中额外增加了PostTypeId=2的过滤条件,避免匹配到评论、其他类型的帖子内容,结果更精准

内容的提问来源于stack exchange,提问作者Pericror Bot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:36:02