【发布时间】:2020-09-17 13:21:48
【问题描述】:
好的,我会尽量做到准确。我有一个带有 parent_comment_id 的 cmets 的数据库。我想从这个表中选择一些 cmets 以及这些 cmets 的匹配数量的答案。我的问题来了:如果我随意选择cmets,我可能会抓住一些没有任何答案的人。但是,如果我先选择评论答案,我可能会抓取已经是另一个评论答案的答案。所以,我想做的是获取评论的即时答案(parent_comment_id = NULL),然后根据 parent_comment_id 获取这些 cmets。我将如何在查询中解决这个问题?
假设数据库的这种布局
comment_id parent_comment_id
1 NULL
2 NULL
3 1
4 3
5 1
6 3
7 1
8 4
9 NULL
10 NULL
...
现在,我会选择 2 个答案和相应的 cmets。如果我只选择前 2 个答案,我会得到评论 3 和 4,但如果我回溯这些,我只会得到评论 1,因为评论 4 是对答案的回答。相反,我只想找到其父评论没有父评论的 cmets,在此示例中为评论 3 和 5。
我并没有真正尝试过任何事情,只是意识到如果不以某种方式递归获取父母,我不知道如何在 SQL 查询中执行此操作。
【问题讨论】:
-
请提供样本数据和所需结果以阐明您的要求。另外,你有没有尝试过这方面的任何事情?
标签: sql database postgresql join recursive-query