sql server2005后版本中,with递归做子查询这样的想法恐怕是在很多在写SQL语句中都想实现的是个功能,但是由于with 语句的特殊性,不能做为子查询,由此,我们只能采用其他的方式去突破,在数据库中有函数这个东西,因此可以把WITH的这个查询写成一函数,在需要的时候去进行调用函数即可。
示例:
with temptable(PID,ID,Name)
as
(
select PID,ID,Name from Table_A where Id=@ID
union all
select Table_A.PID,Table_A.ID,Table_A.Name from Table_A, temptable where tableA.PID=temptable.ID
)select * from temptable