mysql – 递归自我查询
作者:互联网
我有下表:
myTable:
+----+----------+
| id | parentID |
+----+----------+
| 1 | null |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 4 |
-----------------
我想让所有行都追溯到没有parentID了.
所以“…. WHERE id = 5”会给我:
5, 4, 2, 1
解决方法:
您正在使用adjacency list model组织分层数据.事实上,这种递归操作很困难,这实际上是此模型的一个主要缺点.
某些DBMS(如SQL Server 2005,Postgres 8.4和Oracle 11g)支持使用带有WITH关键字的common table expressions进行递归查询.
对于MySQL,您可能有兴趣查看以下描述替代模型(nested set model)的文章,这使得递归操作更容易(可能):
> Mike Hillyer: Managing Hierarchical Data in MySQL
另外,我还建议在上面的评论中指出Bill Karwin’s presentation.所描述的闭包表模型是嵌套集的非常有效的替代方法.
标签:self-join,mysql,parent-child 来源: https://codeday.me/bug/20190926/1818010.html