在同一张表中进行递归查询,即查找下级数据并查询其上级数据,可以使用自连接 (self join) 来实现。以下是一个示例的 SQL 查询语句:

WITH RECURSIVE cte AS (
  SELECT id, name, parent_id
  FROM your_table
  WHERE id = '<下级数据的ID>'
  UNION ALL
  SELECT t.id, t.name, t.parent_id
  FROM your_table t
  INNER JOIN cte c ON c.parent_id = t.id
)
SELECT *
FROM cte;

在上述查询中,使用了 WITH RECURSIVE 子句来创建一个递归公共表表达式 (CTE)。首先,我们选择了下级数据的 ID、名称和父级 ID,作为递归的起始点。然后,我们通过自连接将递归查询与当前的 CTE 连接起来,通过匹配父级 ID 与子级 ID 来查找上级数据。这个过程会一直重复,直到没有更多的匹配项为止。

最后,我们从 CTE 中选择所有的数据,包括下级数据和对应的上级数据。

请注意,上述查询中的 your_table 是你的表名,<下级数据的ID> 是你要查询的下级数据的 ID,你需要根据实际情况进行替换。

SQL 递归查询:如何从下级数据查询上级数据

原文地址: http://www.cveoy.top/t/topic/fesB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录