![]() |
1
4
This link 提供关于邻接列表模型(如问题中所述)和嵌套集模型的教程。它是作为mysql文档的一部分编写的。 那篇文章没有讨论的是插入/删除时间和这两种方法的维护成本。例如:
|
![]() |
2
2
Celko 用于Smarties的SQL中的树和层次结构 |
![]() |
3
1
本文前面介绍了一些方法: |
![]() |
4
1
将根节点ID中的整个“路径”存储在单独的列中,同时确保在开始和结束时使用分隔符。例如,假设1是5的父级,它是17的父级,分隔符是破折号,您将在路径列中存储值1-5-17。 现在要查找5的所有子级,只需选择路径包含-5的记录- 两端的分隔符是必需的,因此在使用like时,您不必担心字段最左端或最右端的ID。 至于深度问题,如果在表中添加一个表示当前嵌套深度的深度列,这也变得很容易。查找起始节点的深度,然后在其中添加x,其中x是要搜索的深度级别数,并筛选出深度大于该深度的记录。 |
![]() |
Community wiki · SQL语法新手 1 年前 |
|
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |