gpt4 book ai didi

MySQL:按线程对评论进行分组,按分数和发布日期排序

转载 作者:行者123 更新时间:2023-11-29 11:09:26 24 4
gpt4 key购买 nike

我正在构建一个 MySQL 数据库,用于存储用户评论,发布有关特定主题的评论。

  • 每个主题都有很多评论
  • 评论有两种类型:根源和回复
  • 对同一根的所有回复以及该根都属于同一个线程
  • ThreadID 等于根的 CommentID

这里是示例数据: enter image description here

我正在尝试构建一个 MySQL 查询,它将选择主题 #55 的所有评论,排列如下:

  • 来自同一 ThreadID 的评论应一起列出
  • 首先按得分最高的帖子排序(帖子得分是评论得分的总和)
  • 如果帖子分数相同,则根评论最早的帖子排在第一位
  • 在同一个话题中,首先按最旧的评论排序

结果还应该有一列包含 ThreadScore

解决方案如下: enter image description here

不幸的是,我无法在一个有效的查询中使事情正常工作。

我当前的查询正确地按线程分组,但没有考虑分数:

select * from comments c
where c.Topic=55
order by c.ThreadID asc, c.TimeCreated asc

Here's a fiddle您可以在其中测试针对此表的查询

最佳答案

您可以尝试以下查询

select c.*, ct.ThreadScore from comments c
join (select ThreadId, sum(Score) ThreadScore
from comments
group by ThreadId) ct
on c.ThreadId = ct.ThreadId
where c.Topic=55
order by c.ThreadId asc, ct.ThreadScore desc, c.TimeCreated asc

我得到的结果是

enter image description here

希望这能解决您的问题

关于MySQL:按线程对评论进行分组,按分数和发布日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40860004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com