代码之家  ›  专栏  ›  技术社区  ›  jantimon

递归和MYSQL?

  •  1
  • jantimon  · 技术社区  · 15 年前

    Table Page Hits
    
    id | title  | parent | hits
    ---------------------------
     1 | Root   |        | 23
     2 | Child  |      1 | 20
     3 | ChildX |      1 | 30
     4 | GChild |      2 | 40
    

    因为我不想在我的代码中有递归,我想做一个递归SQL。

    有没有SELECT语句可以得到 Root (23+20+30+40)或 Child

    2 回复  |  直到 15 年前
        1
  •  2
  •   Daniel Vassallo    15 年前

    您正在使用 adjacency list model . 事实上,这种递归操作很困难,这是这种模型的一个主要缺点。

    common table expressions WITH

    至于MySQL,您可能有兴趣阅读下面的文章,其中描述了一种替代模型( nested set model ),这使得递归操作更容易(可能):

        2
  •  0
  •   Dal Hundal    15 年前

    不在1号选择站,不。

    如果您知道关系商店的最大深度(即家长->儿童->子女或父母->儿童->儿童->孩子)你可以写一个select语句,它会给你一堆数字,然后你必须分别求和(每层深度1个数字)。

    但是,您可以使用递归的mysql存储过程来实现。