簡體   English   中英

我們如何在 T-SQL 中編寫遞歸 SQL 查詢?

[英]How can we write a recursive SQL query in T-SQL?

我們如何在 T-SQL 中編寫遞歸 SQL 查詢?

你能舉一個簡單的例子來說明這種遞歸的 SQL 查詢嗎?

這是一個獨立的示例。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM