如何在树形结构的一个表中.找出所有的根节点呢.>?如.\ID   name   PID
 1   test1   15
 2   test2   1
 3   test3   2
 4   test4   16
 5   text5   18如果没有产生树形关系的数据 不会出现在这个表中..入ID为15,16,18的数据..
如何找出这个表中每一棵树的根节点所有的根节点

1,4,5

解决方案 »

  1.   


    SELECT COUNT(X.UID) FROM USER_INVITE X
    WHERE NOT EXISTS
    (SELECT Y.* FROM USER_INVITE Y WHERE X.PID=Y.UID)
    这样可以不.?感觉效率不是很高吖?
      

  2.   

    select * from tb  where pid not in (select Id from tb)
      

  3.   

    根节点的PID应该是NULL吧,按照这个条件找好了。
      

  4.   

    select prdGrp_ID,prdGrp_Name,parentPrdGrp_ID,(select sign(count(*))
    from MasterData.T_CustomizePrdGrp as B where B.ParentPrdGrp_ID = A.PrdGrp_ID 
    and A.ParentPrdGrp_ID = '0') AS Is_Root
    from MasterData.T_CustomizePrdGrp as A