一个数据检索的的问题

2018-09-08 19:21:39 +08:00
 jamfer

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

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

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

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

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

969 次点击
所在节点    问与答
6 条回复
hlwjia
2018-09-08 20:02:56 +08:00
id, parent_id, content
cpdyj0
2018-09-08 20:08:14 +08:00
个人觉得 #1 那样设计的前提是可以方便的递归,如果不能递归那也可以搞一个 varchar 存 a/b/c 这样的东西
BaiMax
2018-09-09 10:49:34 +08:00
Oracle 有这样一个写法,可以拿到 b 和 b 的所有下级,select ID from table START WITh ID = 'b' connect by prior parent_id = id
BaiMax
2018-09-09 10:59:27 +08:00
或者是表结构加上 treecode,和 nodelevel。
jamfer
2018-09-09 19:51:11 +08:00
@BaiMax #3 mysql 有类似的写法么
BaiMax
2018-09-09 20:15:42 +08:00
@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