如何实现MySQl的递归查询
===============================
现在由一个Table结构如下
ID ParentID Title Content
1    0       XXX  YYY
2    1       XXXX YYYY
3    1       ydf   dfa
4    0       dfa   gfg
5    4      df     dff
6    3       dfdsf   dssdr
.............
================================
现在我需要的是,提供一个ID,需要把所有下属都列出来(当然包括下属的下属)..应如何查询

解决方案 »

  1.   

    只列出下属么?
    select ID, ParentID, Title, Content from table where ParentID = ?如果该ID也要列出
    select ID, ParentID, Title, Content from table where ParentID = ? or ID = ?
      

  2.   

    你现在的存储结果没有办法用一条简单的SQl 实现。至于能不能用存储过程实现我也不确定。但是我想告诉你,是我在维护一棵树的时候是如何做的。
    你这里实际上只要加一个字段就Ok了。比如这个字段叫tree_code,字符串类型的。ParentId为0的那些字段存储001,002,003...。而ParentId为
    1的那个存储001001,001002,001003.....;ParentId为2的那些字段存储002001,002002,002003.....。
    这样要查某个节点下的所有字节点就可以通过"like '001%'"这样就可以搞定了。
    不过这样麻烦的一点就是你需要维护这样一个tree_code字段。
      

  3.   


    不是提供了一个ID吗,那么随便是pid 还是id都没关系,其他的信息都会筛选出来
      

  4.   

    从中间可以啊,比如 like '002003%'