是否可以在SQL中创建"树解析器"?
我有一张桌子:
ID Name Parent
1 a
2 b 1
3 c 1
4 d 3
Run Code Online (Sandbox Code Playgroud)
现在我想要一个返回的SQL查询:
ID PATH
1 /a
2 /a/b
3 /a/c
4 /a/c/d
Run Code Online (Sandbox Code Playgroud)
这可能与SQL有关吗?它会让我更容易.真的很感激任何帮助!
在SQL Server 2005及更高版本中使用CTE,这是我必须执行此操作的片段:
WITH Paths([Level], [FullPath], [ID]) AS
(
SELECT
0 AS [Level],
Name AS FullPath,
ID
FROM dbo.Entity
WHERE (ParentEntityID IS NULL)
UNION ALL
SELECT
p.[Level] + 1 AS [Level],
CASE RIGHT(p.[FullPath], 1)
WHEN '\' THEN p.[FullPath] + c.[Name]
ELSE p.[FullPath] + '\' + c.[Name]
END AS FullPath,
c.ID
FROM dbo.Entity AS c
INNER JOIN Paths AS p ON p.ID = c.ParentEntityID
)
SELECT [FullPath], [ID]
FROM Paths
Run Code Online (Sandbox Code Playgroud)