首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从SEDE中提取被接受的和最高的投票回答问题?

如何从SEDE中提取被接受的和最高的投票回答问题?
EN

Stack Overflow用户
提问于 2019-10-29 17:18:45
回答 1查看 255关注 0票数 3

我正在编写一个查询,以使用以下查询从堆栈溢出堆栈交换数据资源管理器中提取问题和答案:

代码语言:javascript
复制
SELECT Top 2 
q.id, q.Title, q.Body q_body, q.parentid qpid, q.AcceptedAnswerId, q.Score q_score, q.AnswerCount, q.Tags, q.viewcount,

answers.parentid aa_pid, answers.id aa_id,
answers.body aa_body, answers.score as aa_score, answers.posttypeid 

FROM 
  Posts answers

INNER JOIN Posts q 
  ON answers.parentid = q.id

WHERE (answers.id = q.AcceptedAnswerId) AND q.AnswerCount > 2

但是,除了接受的答案之外,我还想提取出中投票最多的答案。因为,我甚至不明白为什么应答不是一个表。

EN

回答 1

Stack Overflow用户

发布于 2020-12-16 11:12:50

下面是是我提出的一个查询,您可以实时看到它:

代码语言:javascript
复制
SELECT Id AS [Post Link], Body, Score
FROM (
    SELECT TOP 1 Id, Body, Score, DENSE_RANK() OVER(ORDER BY Score DESC) Rank 
    FROM (
        SELECT p.Id, p.ParentId, p.Body, p.Score
        FROM Posts p 
        WHERE p.ParentId = ##QuestionId##
    )x
    ORDER BY Rank ASC
)x

UNION
SELECT * 
FROM (
    SELECT Id, Body, Score
    FROM (
        SELECT a.Id, a.ParentId, a.Body, a.Score FROM Posts a 
        WHERE a.ParentId = ##QuestionId##
    )x
)x 
WHERE (SELECT b.AcceptedAnswerId FROM Posts b WHERE b.id = ##QuestionId##) = id

第一部分找到最上面的投票答案,而第二部分搜索被接受的答案(如果有)。

这两者都有点复杂,因为Posts表是关于答案和问题的。这就是两个嵌套FROM的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58612475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档