[英]How can we write a recursive SQL query in T-SQL?
How can we write a recursive SQL query in T-SQL?我们如何在 T-SQL 中编写递归 SQL 查询?
Can you give a simple example of such a recursive SQL query?你能举一个简单的例子来说明这种递归的 SQL 查询吗?
Here is a self-contained example.这是一个独立的示例。
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)
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
请查看以下链接,了解如何使用公用表表达式编写递归查询: http : //msdn.microsoft.com/en-us/library/ms186243.aspx
See and read: 看看并阅读:
Recursive Queries Using Common Table Expressions 使用公用表表达式的递归查询
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.