SQL 递归查询:从下级数据查询上级数据
在 SQL 中,可以使用递归查询来查询由下级查询上级的数据。在 SQL Server 中,可以使用 Common Table Expression(CTE)和递归查询来实现这个功能。
下面是一个示例,演示如何使用 CTE 和递归查询来查询由下级查询上级的数据:
WITH RecursiveCTE AS (
    -- 初始查询,找到指定下级的数据
    SELECT id, name, parent_id
    FROM your_table
    WHERE id = @input_id
    UNION ALL
    -- 递归查询,找到上级的数据
    SELECT t.id, t.name, t.parent_id
    FROM your_table t
    INNER JOIN RecursiveCTE r ON t.id = r.parent_id
)
-- 最终查询,获取所有上级的数据
SELECT *
FROM RecursiveCTE
在上面的示例中,我们首先定义了一个 CTE(RecursiveCTE),它包括两个部分:初始查询和递归查询。
初始查询是通过指定的下级 ID(@input_id)找到其对应的数据。
递归查询是通过将初始查询的结果与原始表格进行连接,找到上级的数据。这个过程会一直重复,直到找不到更多的上级为止。
最后,在 CTE 之外的查询中,我们可以从 RecursiveCTE 中选择所需的数据,以获取所有上级的数据。
请注意,上述示例是针对 SQL Server 的语法。如果使用其他数据库管理系统,请根据其特定的语法进行调整。
原文地址: https://www.cveoy.top/t/topic/fezB 著作权归作者所有。请勿转载和采集!