一个数据检索的的问题

2018 年 9 月 8 日
 jamfer

假设有评论 abcde 存在数据库中。

a 为父级评论。
b 回复了 a
c 回复了 b
d 回复了 a
e 回复了 c

这时候我想检出其中某个评论和所有相关的子评论。

例如
b 和所有相关子评论是 bce
c 和所有相关子评论是 ce

我应该怎么写 sql 语句,或者如何设计数据结构

1296 次点击
所在节点    问与答
6 条回复
hlwjia
2018 年 9 月 8 日
id, parent_id, content
cpdyj0
2018 年 9 月 8 日
个人觉得 #1 那样设计的前提是可以方便的递归,如果不能递归那也可以搞一个 varchar 存 a/b/c 这样的东西
BaiMax
2018 年 9 月 9 日
Oracle 有这样一个写法,可以拿到 b 和 b 的所有下级,select ID from table START WITh ID = 'b' connect by prior parent_id = id
BaiMax
2018 年 9 月 9 日
或者是表结构加上 treecode,和 nodelevel。
jamfer
2018 年 9 月 9 日
@BaiMax #3 mysql 有类似的写法么
BaiMax
2018 年 9 月 9 日
@jamfer mysql 没有,是 Oracle 独有的函数。

如果用 4 楼加字段的方法也可以实现,只不过稍微麻烦点。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/487436

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX