【聚搜云】是上海聚搜信息技术有限公司旗下品牌,坐落于魔都上海,服务于全球、2019年成为阿里云代理商生态合作伙伴。与阿里云代理商、腾讯云、华为云、西部数码、美橙互联、AWS亚马逊云国际站渠道商、聚搜云,长期战略合作的计划!华为云国际站代理商专业的云服务商!
【华为云GaussDB】SQL递归写法是一种高效的算法,可以用来查询树形结构数据,尤其是在业务分析中更是司空见惯。但是许多初学者往往不知如何下手,因此我们提供以下参考示例:
1. 首先,需要创建表并插入相关数据。以下是创建和插入语句:
CREATE TABLE organization
(
id bigint NOT NULL AUTO_INCREMENT COMMENT '组织id',
name varchar(50) NOT NULL COMMENT '组织名称',
parent_id bigint NOT NULL COMMENT '父级id',
prIMARY KEY (id)
) COMMENT '组织机构表' ;
INSERT INTO organization (name,parent_id) VALUES('总公司',0);
INSERT INTO organization (name,parent_id) VALUES('广东分公司',1);
INSERT INTO organization (name,parent_id) VALUES('深圳办事处',2);
INSERT INTO organization (name,parent_id) VALUES('珠海办事处',2);
INSERT INTO organization (name,parent_id) VALUES('广州办事处',2);
INSERT INTO organization (name,parent_id) VALUES('上海中心',1);
INSERT INTO organization (name,parent_id) VALUES('北京办事处',1);
2. 接着,可以使用以下SQL语句查询树形结构:
WITH RECURSIVE cte (id, name, parent_id, depth, path) AS (
SELECT
id,
name,
parent_id,
1,
CAST(id AS CHAR(200))
FROM
organization
WHERE parent_id = 0 --根节点
UNION ALL
SELECT
o.id,
o.name,
o.parent_id,
cte.depth + 1,
CONCAT(cte.path, ',', o.id)
FROM
organization o
JOIN cte ON o.parent_id = cte.id
)
SELECT * FROM cte ORDER BY path;
3. 最后,您将看到如下所示的输出结果:
id name parent_id depth path
1 总公司 0 1 1
2 广东分公司 1 2 1,2
3 深圳办事处 2 3 1,2,3
4 珠海办事处 2 3 1,2,4
5 广州办事处 2 3 1,2,5
6 上海中心 1 2 1,6
7 北京办事处 1 2 1,7
【聚搜云】作为华为云国际站代理商,提供全方位的技术支持和解决方案。如果您在使用【华为云GaussDB】时遇到了任何问题或疑问,请不要犹豫,欢迎随时联系我们的服务团队,我们将竭诚为您服务。