【问题标题】:SQL: how to find all replies to a deleted comment?SQL:如何查找对已删除评论的所有回复?
【发布时间】:2021-02-19 17:44:20
【问题描述】:

我的 cmets 表有这些列:

`comment_id` - comment
`parent_comment_id`  - a reply to comment.

我需要选择在其parent_comment_id 列中指定缺少(不存在)comment_id 的所有comment_id

基本上,我需要选择对已删除评论的所有回复。


一个例子:

马克说:你好,你好吗?
Jonh 回复:我很好,谢谢。

在我们的数据库中,这些 cmets 将如下所示:
comment id                 parent_comment_id                  comment_text
374 0你好,你好吗?
375 374我很好,谢谢。

现在想象一下,comment_id 374 已从我们的数据库中删除。这将使comment_id 375 在他们的parent_comment_id 374 中指向不存在的comment_id

所以我的问题是如何选择这样的 cmets 来回复不再存在的 cmets?

【问题讨论】:

  • 请提供样本数据、所需结果、对所需逻辑的清晰解释以及适当的数据库标签。
  • 在这里,我给我们画了一个数据库 :) 我希望这会让我非常清楚,我在问什么
  • 您当前的代码选择像 374 这样的 cmets,但我们需要相反才能找到像 375 这样的 cmets

标签: sql select missing-data


【解决方案1】:

这回答了问题的原始版本。

我需要选择所有在其 parent_comment_id 列中指定缺少(不存在)comment_id 的 comment_id。

你可以使用not exists:

select c.*
from comments c
where not exists (select 1
                  from comments cp
                  where cp.comment_id = c.parent_comment_id
                 );

【讨论】:

  • 不,这是错误的。您的代码只选择了所有comment_idparrent_column_id = 0。我需要parent_column_id 不为空并且有一个不丢失的comment_id。
  • @En0w1na 。 . .不,这正是您的问题所要求的——选择所有父 ID 无效的 cmets。你的问题甚至没有提到parent_column_id = 0,所以我不知道它是如何适应的。
  • 我的parent_column_id 包含它所属的comment_id。有时,“comment_id”不再存在,因为它已被删除。
猜你喜欢
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
相关资源
最近更新 更多