mysql - 递归计算帖子的评论数

标签 mysql sql

我正在制作一个嵌套评论系统,我有下表:

create table comments (
id int unsigned primary key auto_increment,
author_id int unsigned not null,
target_id int unsigned not null,
target_type set('post','comment') not null,
content varchar(2000) not null
);

每条评论都可能针对一个帖子或另一个评论,在这种情况下,它将被视为回复。有没有一种简单的方法来计算给定帖子(例如 id 1 的帖子)的嵌套评论数(评论+回复+对回复的回复等)?

我知道,如果我有一个名为 target_post_id 的字段和另一个名为 target_comment_id 的字段,而不是有 target_id 和 target_type,那么计算任何给定帖子的所有评论将非常容易,但我有理由尝试保留此表结构,说实话,我以前从未处理过递归查询。感谢任何帮助,谢谢!!

最佳答案

简短的回答是“不”。稍微长一点的答案是,您可以在整个帖子上保留评论计数,并在嵌套结构中添加/删除评论时更新它(这是非规范化的,但在这种情况下并非完全出乎意料);或者正如您所指出的,您可以随时从每条评论中指向该帖子。

关于mysql - 递归计算帖子的评论数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9651111/

相关文章:

MySQL错误,缺少sock,仍然可以连接除命令行之外的所有内容

python - 如何根据插入的内容确定 SQL 列值的优先级?

sql - 如何使用AWS快速分区100亿行SQL表?

sql - 如何在字段顺序无关紧要的情况下实现唯一性

mysql - visual studio Tableadapter sql 命令错误

php - 在 IBM/Lotus Domino 服务器上运行 PHP

php - Symfony2 Doctrine 自定义查询问题

php - SQL PHP 可搜索表单字段添加到新数据库

sql - MySQL:获取父子结构的根节点

sql - Select 和 View 之间的执行计划差异