递归sql查询T-sql
如何在T-sql中编写递归sql查询?递归sql查询T-sql,sql,tsql,Sql,Tsql,如何在T-sql中编写递归sql查询? 你能给出这样一个递归sql查询的简单例子吗。这里是一个自包含的例子 CREATE TABLE ATable (ID INTEGER, ParentID INTEGER) INSERT INTO ATable SELECT 1, NULL UNION ALL SELECT 2, 1 UNION ALL SELECT 3, 2 ;WITH q AS ( SELECT ID, ParentID FROM ATable UNION ALL
你能给出这样一个递归sql查询的简单例子吗。这里是一个自包含的例子
CREATE TABLE ATable (ID INTEGER, ParentID INTEGER)
INSERT INTO ATable
SELECT 1, NULL
UNION ALL SELECT 2, 1
UNION ALL SELECT 3, 2
;WITH q AS (
SELECT ID, ParentID
FROM ATable
UNION ALL
SELECT a.ID, a.ParentID
FROM ATable a
INNER JOIN q ON q.ID = a.ParentID
)
SELECT DISTINCT *
FROM q
Declare @Temp table
(
ID int,
ParentID int,
Happened date,
Value int
)
Insert into @Temp Values
(1, null, dateadd(day,1,GetDate()),1),
(2, 1, dateadd(day,2,GetDate()),2),
(3, 1, dateadd(day,3,GetDate()),3),
(4, null, dateadd(day,4,GetDate()),10),
(5, 3, dateadd(day,5,GetDate()),50),
(6, 4, dateadd(day,5,GetDate()),50),
(7, 5, dateadd(day,5,GetDate()),90);
----------------------------------------
with Magic as
(
select *
from @Temp
Where ID = 1
union all
select t.*
from
Magic m
inner join
@Temp t
on t.ParentID = m.ID
)
select * from Magic
option (maxrecursion 3)
@用户491518,你怎么改变了被接受的答案?我认为@Jacques Bosch的答案更好。