idd*_*dqd 9 mysql parent-child self-join
我有下表:
myTable:
+----+----------+
| id | parentID |
+----+----------+
| 1 | null |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 4 |
-----------------
Run Code Online (Sandbox Code Playgroud)
我想让所有行都追溯到没有parentID了.所以".... WHERE id = 5"会给我:
5, 4, 2, 1
Run Code Online (Sandbox Code Playgroud)
您正在使用邻接列表模型组织分层数据.事实上,这种递归操作很困难,这实际上是该模型的一个主要缺点.
某些DBMS(如SQL Server 2005,Postgres 8.4和Oracle 11g)支持使用带有关键字的公用表表达式的递归查询WITH.
对于MySQL,您可能有兴趣查看以下描述替代模型(嵌套集模型)的文章,这使得递归操作更容易(可能):
此外,我还建议查看Bill Karwin在上述评论中指出的演讲.所描述的闭包表模型是嵌套集的非常有效的替代方法.
| 归档时间: |
|
| 查看次数: |
4894 次 |
| 最近记录: |