我有一个表Table1
ID Name ParentID
----------- ----------- -----------
1 Name1 null
2 Name2 1
3 Name3 1
4 Name4 2
5 Name5 2
6 Name6 5
7 Name7 null
要求查Table1中Name为‘Name1’的所有数据和子数据。上表中的(1~6)条。
可以使用sql server 2005开始有的新功能With as。
WITH Temp
AS
(
select * from Table1 where Name = 'Name1'
union all
select s2.* from Table1 as s2, Temp as s1 where s2.ParentID = s1.ID
)
select * from Temp;
参考文章:http://www.ibm.com/developerworks/data/library/techarticle/0307steinbach/0307steinbach.html