前言:最近搞树形结构比较多,网上总体分为子关联查询,子查询等等方法,个人感觉都不是很好用,现总结出自己的经验。个人体会,仅供参考!
个人思路:例如一个层高为2的树形结构,其实不管是自关联查询,还是子查询,都得有个回表的操作,个人感觉查询效率和用两条SQL效率也差不多。基于这个认知,我决定每一层的数都用一条SQL,然后查询结果用JAVA循环来构造树形结构。
还是层高为2的树形结构为例子,构造过程如下:
1、select * from xx where parent_id=0; //查询出父节点 parentArray,
【关于MYSQL树形结构的查询感悟】2、select * from xx where parent_id in (parentArray); //查询出所有的子节点,
3、java代码循环匹配父子节点,构造成树形结构对象。
对于N层树,还有一个问题在于不确定树高,可以判断每次查询所有子节点是否为null。