日期:2014-05-18  浏览次数:20872 次

sql递归查询
表结构
      spid                       parentid    
1     ws112                       0              
2     01                             1              
3     02                             1              
4     03                             1              
5     0101                         2              
6     0201                         3              
7     0301                         4              

求给定spid的最低级节点
例如给定ws112,求出0101     0201     0301

------解决方案--------------------
sql递归
还是用存储过程写
或者放到C#代码里面

不过感觉这样效率太低
还是判断parentid小于某一个spid 不知行不行
------解决方案--------------------
1 找ws112的子接点,插入临时表
2 遍历临时表中每一个记录
A 没有子节点的,放入结果表
B 有自节点的,将本身删除,然后将子节点加入临时表
3 直到临时表没有记录,就结束
4 结果表就是最地层记录