根据给出的递归查询语句,只会返回子级数据的一条父级数据。这是因为在递归查询中,每次递归查询只会返回当前级别的数据,而不会返回全部层级的数据。

要返回所有层级的数据,可以使用递归查询的方法进行多次查询并将结果合并。以下是一个示例的解决方案:

-- 临时表,存储递归查询的结果
create table temp_sfdmap as
select *
from guangdong_sfdmap 
where xzqdm = 441424141230 and zzz0006 = 0

-- 递归查询,将上一级的id作为下一级的parent_id
insert into temp_sfdmap
select c.*
from guangdong_sfdmap c 
join temp_sfdmap t 
on c.id = t.parent_id
where t.zzz0006 = 0

-- 重复执行以上递归查询,直到不再返回新的数据
while (row_count() > 0) do
  insert into temp_sfdmap
  select c.*
  from guangdong_sfdmap c 
  join temp_sfdmap t 
  on c.id = t.parent_id
  where t.zzz0006 = 0;
end while;

-- 查询最终结果
select * from temp_sfdmap;

上述解决方案中,首先创建了一个临时表temp_sfdmap,用于存储递归查询的结果。然后通过多次执行递归查询,并将结果插入到临时表中,直到不再返回新的数据为止。最后,从临时表中查询最终的结果。

请注意,这只是一个示例的解决方案,具体实现可能需要根据数据库的类型和版本进行调整。

SQL 递归查询只返回子级数据的原因及解决方案

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

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