数据库
首页 > 数据库> > mysql – 递归自我查询

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