一条select语句把小弟我难倒了,大家帮小弟我看看,能不能实现小弟我提的两个有关问题

一条select语句把我难倒了,大家帮我看看,能不能实现我提的两个问题表departidparentidname10a21b32c43d54e

一条select语句把我难倒了,大家帮我看看,能不能实现我提的两个问题
表depart

id                         parentid                           name

1                                           0                                         a

2                                           1                                         b  

3                                           2                                         c

4                                           3                                         d

5                                           4                                         e

6                                           5                                           f

7                                           6                                         g

8                                           7                                         h

9                                           8                                           i        

以上是表的信息,要求写出一条select语句,把parentid为1的“子孙”都查处来。

在orcale里实现了,语句如下:

select         id,parentid   ,name

start         with       parentid     =     1

connect       by       prior       id   =   parentid     ;

(1)可是在mysql和SQLServer里面这个怎么写?

(2)有人说用递归在程序里实现,这个递归怎么写?

我希望大家帮我解决以上两个问题,小弟我刚到csdn不久,水平也有限,实在是没什么分数可

发给大家,真的非常惭愧。。。



------解决方案--------------------


其实我觉得与其你一次把所有的子孙节点都取出来,倒不如每次取一个节点的儿子节点,比如你点击id=2的节点,那么就取所有parentid=2的节点返回,当再点击id=3的节点时,就再次请求数据库把所有parentid=3的节点返回。
[解决办法]
Map getSons(String parentid){
map <- select id from depart d where d.parentid = :parentid
result += map;
for( item : map){
id = item.id
result += getSons(id);
}
}
[解决办法]
sql语句挺难写出来的
还是用递归作吧
[解决办法]
用递归吧,sqlserver中没有start with connect by