Jos*_*san 1 sql t-sql sql-server
我有一个包含以下架构的表:
ID , CatID, ParentCatID, SiteID
Run Code Online (Sandbox Code Playgroud)
我想获得所有属于作为根的类别(意味着他们的ParentCatID = 0)及其所有后代的网站.
例如 :
ID , CatID, ParentCatID, SiteID
--------------------------------
1 , 2 , 0 , 3
1 , 4 , 2 , 6
1 , 5 , 4 , 7
Run Code Online (Sandbox Code Playgroud)
在此示例中,CatID 2是4的父级,4是5的父级.
如何获取属于根类别及其所有后代的所有SiteID.
使用SQL Server 2005+支持的递归公用表表达式:
WITH hierarchy AS (
SELECT yt.id,
yt.catid,
yt.parentcatid,
yt.siteid
FROM YOUR_TABLE yt
WHERE yt.parentcatid = 0
UNION ALL
SELECT yt.id,
yt.catid,
yt.parentcatid,
yt.siteid
FROM YOUR_TABLE yt
JOIN hierarchy h ON h.catid = yt.catid)
SELECT t.*
FROM hierarchy t
OPTION (maxrecursion 1000)
Run Code Online (Sandbox Code Playgroud)
如果你得到:
声明终止.在语句完成之前,最大递归100已用尽
默认值为100次递归.可以通过maxrecursion选项设置最大递归次数,最大值为32767.
| 归档时间: |
|
| 查看次数: |
3400 次 |
| 最近记录: |