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/