【问题标题】:SQL Server get parent listSQL Server 获取父列表
【发布时间】:2010-12-31 14:36:36
【问题描述】:

我有一张这样的桌子:

id name parent_id
1  ab1  3
2  ab2  5
3  ab3  2
4  ab4  null
5  ab5  null
6  ab6  null

我需要使用输入 id = 1 进行查询(例如),结果将如下所示:

id name parent_id
5  ab5  null
2  ab2  5
3  ab3  2
1  ab1  3

(列出所有级别的所有父母,从项目 id = 1 开始)

【问题讨论】:

    标签: sql-server hierarchy


    【解决方案1】:

    大概是这样的吧?

        WITH parents(id,name,parent,level)
        AS
        (
        SELECT
           ID,
           NAME,
           PARENT,
           0 as level
        FROM
           TABLE
        WHERE ID = 1
        UNION ALL
        SELECT
           ID,
           NAME,
           PARENT,
           Level + 1
        FROM 
           TABLE
        WHERE
           id = (SELECT TOP 1 parent FROM parents order by level desc)
        )
        SELECT * FROM parents
    

    【讨论】:

      【解决方案2】:

      使用WITH RECURSIVE。文档和适应性示例:Recursive Queries Using Common Table Expressions

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-08
        • 2010-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多