SQL 递归查询只返回子级数据的原因及解决方案
根据给出的递归查询语句,只会返回子级数据的一条父级数据。这是因为在递归查询中,每次递归查询只会返回当前级别的数据,而不会返回全部层级的数据。
要返回所有层级的数据,可以使用递归查询的方法进行多次查询并将结果合并。以下是一个示例的解决方案:
-- 临时表,存储递归查询的结果
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,用于存储递归查询的结果。然后通过多次执行递归查询,并将结果插入到临时表中,直到不再返回新的数据为止。最后,从临时表中查询最终的结果。
请注意,这只是一个示例的解决方案,具体实现可能需要根据数据库的类型和版本进行调整。
原文地址: https://www.cveoy.top/t/topic/fjoO 著作权归作者所有。请勿转载和采集!