How to self JOIN recursively in SQL?

前端 未结 3 1691
长发绾君心
长发绾君心 2020-12-10 03:17

I have a table:

Series
========
ID
SeriesName
ParentSeriesID

A series can be a \"root\" series, (ParentSeriesID is 0 or null) or it can ha

3条回答
  •  -上瘾入骨i
    2020-12-10 04:01

    I just enhance the work of Thomas. If you need to get the depth of the hierarchy and getting the parentid here is the code.

    This was almost the same with Thomas' work.

    With Family As 
    ( 
        Select s.ID, s.ParentSeriesId, 0 as Depth
        From Series s
        Where ID = @ParentID <--- this was removed if you intend to get all hierarchy of the record. You can retain this if you want
      Union All 
         Select s2.ID, s2.ParentSeriesId < --- change to **Family.ParentID**, Depth + 1
         From Series s2
         Join Family 
             On Family.ID = s2.ParentSeriesId 
    ) 
     Select *
     From Family 
    

    That's all. I know it's too late but I hope anyone who encounter this may help them. Thanks Thomas for the original code. :)

提交回复
热议问题