从 SQL Server 2005 检索分层数据
由于 SQL Server 2005 中缺少熟悉的 CONNECT_BY 子句,检索分层数据可能会带来挑战。一种常见的方法是创建一个递归公用表表达式 (CTE),它遍历层次结构并构造所需的输出。
考虑包含对象层次结构的自引用表的示例,其中每个子记录都有一个列及其父级 ID。 CTE 可用于检索层次关系并为每个项目创建路径:
CREATE TABLE tblHierarchy (ID int, ParentID int NULL, Name varchar(128)); INSERT INTO tblHierarchy VALUES (1, NULL, '1'); INSERT INTO tblHierarchy VALUES (2, NULL, '2'); INSERT INTO tblHierarchy VALUES (3, NULL, '3'); INSERT INTO tblHierarchy VALUES (4, 1, '1.1'); INSERT INTO tblHierarchy VALUES (5, 1, '1.2'); INSERT INTO tblHierarchy VALUES (6, 4, '1.1.1'); WITH Parent AS ( SELECT ID, ParentID, Name AS Path FROM tblHierarchy WHERE ParentID IS NULL UNION ALL SELECT TH.ID, TH.ParentID, CONVERT(varchar(128), Parent.Path + '/' + TH.Name) AS Path FROM tblHierarchy TH INNER JOIN Parent ON Parent.ID = TH.ParentID ) SELECT * FROM Parent
输出:
ID ParentID Path 1 NULL 1 2 NULL 2 3 NULL 3 4 1 1/1.1 5 1 1/1.2 6 4 1/1.1/1.1.1
通过利用 CTE,我们可以递归地遍历层次结构,累积每个项目的路径,并以结构化的方式轻松检索所需的层次结构数据。这种方法为管理和查询 SQL Server 2005 中的分层数据提供了灵活高效的解决方案。
以上是如何在不使用CONNECT_BY的情况下高效地检索SQL Server 2005中的分层数据?的详细内容。更多信息请关注PHP中文网其他相关文章!