本文参考了:
Mike Hillyer的《Managing Hierarchical Data in MySQL》
及Yimin的翻译版《MYSQL中分层数据的管理》
建表sql
1 | CREATE TABLE nested_category ( |
##1.检索整树
我们可以通过自连接把父节点连接到子节点上来检索整树,是因为子节点的lft值总是在其
父节点的lft值和rgt值之间:
1 | SELECT node.name |
1 | ELECTRONICS |
缩进显示层次
1 | SELECT lpad( '+', (COUNT(parent.name)-1),'+')||node.name name |
1 | NAME |
##2.检索所有叶子节点
检索出所有的叶子节点,使用嵌套集合模型的方法比邻接表模型的LEFT JOIN方法简单多
了。如果你仔细得看了nested_category表,你可能已经注意到叶子节点的左右值是连续的。要检索出叶子节点,我们只要查找满足rgt=lft+1的节点:
1 | SELECT name |
1 | NAME |