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

递归MySQL查询?

  •  2
  • afkbowflexin  · 技术社区  · 14 年前

    我的问题是,我所做的基本上就是连接所做的正确的事情?构造中间表,然后查询结果。似乎应该有一种方法可以通过连接来实现,但是MySQL文档只涉及到在有限深度内检索树的一部分。有办法吗?我是用PHP做的。

    2 回复  |  直到 14 年前
        1
  •  15
  •   Mark Byers    14 年前

    MySQL不支持递归查询。

    我建议你看看比尔·卡尔文的 presentation 他比较了四种不同的存储体系结构数据的模型,并分析了它们的优缺点:

    • 邻接表
    • 路径枚举
    • 嵌套集
    • 闭合表

    幻灯片48显示了每种模型的某些查询类型的相对难度。从您的问题来看,您似乎对“查询子树”最感兴趣,对于它,邻接列表(您当前使用的模型)在四个查询子树中的性能最差。

    SELECT * FROM yourtable 并在客户端重建树结构。

        2
  •  1
  •   Zak    14 年前

    如果要选择树的一个分支,可以考虑使用顺序整数“排序列”存储元素并链接到左侧和右侧节点,然后选择最左侧节点和最右侧节点整数范围内的所有节点。