MySQL 递归 - 检索所有子元素

标签 mysql recursion

5 并有以下场景:

我有一个包含两列的数据库表:id(int)parentId(int)

假设我的数据是这样的

id  parentId
1   null
2   1
3   1
4   3
5   3
6   4
7   4
8   6

现在我想编写一个查询,列出所有具有特定元素作为祖先的元素。如何做到这一点?

例如,我想要所有以 4 作为祖先的元素; 6,7,8

最佳答案

您的表格是一个 adjacency list model 的示例分层数据。这有众所周知的局限性,包括不可能编写一个查询来执行您想要的操作。 (您可以通过施加深度限制来执行单个查询,但这很痛苦。)

更好的结构是 nested set model .有篇不错的文章here关于嵌套集模型的工作原理,包括大量用于实现它的 SQL 代码。

关于MySQL 递归 - 检索所有子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8821545/

相关文章:

mysql - 事件记录 (Rails) MySQL 安全连接

Mysql 在两个表中找到公共(public)字段的匹配行并将字段合并为一行

c++ - 具有值的递归阶乘错误返回语句,在返回 'void' 的函数中 [-fpermissive]

java - 在 Java 中使用递归的主要因素

java - 调用二分查找方法的正确方法是什么

MySQL 截断了不正确的 DOUBLE 值?

php - SQL 验证!

php - 这段代码怎么会有错误呢?

java - 递归和递归方法

C++ 返回一个对象或在函数内部更改对象