V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jamfer
V2EX  ›  问与答

一个数据检索的的问题

  •  
  •   jamfer · 2018-09-08 19:21:39 +08:00 via iPhone · 967 次点击
    这是一个创建于 2268 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    6 条回复    2018-09-09 20:15:42 +08:00
    hlwjia
        1
    hlwjia  
       2018-09-08 20:02:56 +08:00
    id, parent_id, content
    cpdyj0
        2
    cpdyj0  
       2018-09-08 20:08:14 +08:00
    个人觉得 #1 那样设计的前提是可以方便的递归,如果不能递归那也可以搞一个 varchar 存 a/b/c 这样的东西
    BaiMax
        3
    BaiMax  
       2018-09-09 10:49:34 +08:00 via Android   ❤️ 1
    Oracle 有这样一个写法,可以拿到 b 和 b 的所有下级,select ID from table START WITh ID = 'b' connect by prior parent_id = id
    BaiMax
        4
    BaiMax  
       2018-09-09 10:59:27 +08:00 via Android
    或者是表结构加上 treecode,和 nodelevel。
    jamfer
        5
    jamfer  
    OP
       2018-09-09 19:51:11 +08:00 via iPhone
    @BaiMax #3 mysql 有类似的写法么
    BaiMax
        6
    BaiMax  
       2018-09-09 20:15:42 +08:00 via Android
    @jamfer mysql 没有,是 Oracle 独有的函数。

    如果用 4 楼加字段的方法也可以实现,只不过稍微麻烦点。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2620 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 04:35 · PVG 12:35 · LAX 20:35 · JFK 23:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.