我有一个存储类别和子类别的表(自联接)
The table structure is like this:
-CategoryId
-CategoryName
-ParentCategoryId
Run Code Online (Sandbox Code Playgroud)
如何在sql查询中查找类别的第n个子/子
这样的事情怎么样?
DECLARE @Categories TABLE(
CategoryId INT,
CategoryName VARCHAR(20),
ParentCategoryId INT
)
INSERT INTO @Categories SELECT 1, '1',NULL
INSERT INTO @Categories SELECT 2, '2',NULL
INSERT INTO @Categories SELECT 3, '1.3',1
INSERT INTO @Categories SELECT 4, '1.4',1
INSERT INTO @Categories SELECT 5, '1.3.5',3
INSERT INTO @Categories SELECT 6, '1.3.6',3
INSERT INTO @Categories SELECT 7, '1.3.6.7',6
INSERT INTO @Categories SELECT 8, '1.4.8',4
DECLARE @CatID INT,
@NthLevel INT
SELECT @CatID = 1,
@NthLevel = 2
;WITH Vals AS (
SELECT *,
1 AS CatLevel
FROM @Categories c
WHERE CategoryId IS NULL
UNION ALL
SELECT c.*,
CatLevel + 1 AS CatLevel
FROM Vals v INNER JOIN
@Categories c ON c.ParentCategoryId = v.CategoryID
)
SELECT *
FROM Vals
WHERE CatLevel = @NthLevel
Run Code Online (Sandbox Code Playgroud)
这将以递归方式构建树结构,并将其限制在您要查找的树级别上.
| 归档时间: |
|
| 查看次数: |
1453 次 |
| 最近记录: |