gpt4 book ai didi

mysql - MySQL 的先验等价物连接

转载 作者:IT老高 更新时间:2023-10-28 23:55:22 25 4
gpt4 key购买 nike

全部,

我在一个表中有三个字段,它们定义了 MySQL 数据库版本 5.0 中存在的父子关系。表名是tb_Tree,有如下数据:

Table Name: tb_Tree

Id | ParentId | Name
--------------------
1 | 0 | Fruits
2 | 0 | Vegetables
3 | 1 | Apple
4 | 1 | Orange
5 | 2 | Cabbage
6 | 2 | Eggplant

如果指定了 ParentId,我该如何编写查询来获取所有子项。请注意,给出的表条目只是样本数据,它们可以有更多的行。 Oracle 有一个“CONNECT BY PRIOR”子句,但我没有找到 MySQL 的类似内容。任何人都可以请教吗?

谢谢

最佳答案

MySQL 不支持递归查询,所以你必须努力做到这一点:

  1. 选择 ParentID = X 的行,其中 X 是您的根。
  2. 从 (1) 中收集 Id 值。
  3. 对 (2) 中的每个 Id 重复 (1)。
  4. 继续手动递归,直到找到所有叶节点。

如果您知道最大深度,那么您可以将表连接到自身(使用 LEFT OUTER JOIN)到最大可能深度,然后清除 NULL。

您也可以将树表示更改为 nested sets .

关于mysql - MySQL 的先验等价物连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7631048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com