華為云服務(wù)器GaussDB SQL遞歸寫法有示例做參考嗎?
【聚搜云】是上海聚搜信息技術(shù)有限公司旗下品牌,坐落于魔都上海,服務(wù)于全球、2019年成為阿里云代理商生態(tài)合作伙伴。與阿里云代理商、騰訊云、華為云、西部數(shù)碼、美橙互聯(lián)、AWS亞馬遜云國(guó)際站渠道商、聚搜云,長(zhǎng)期戰(zhàn)略合作的計(jì)劃!華為云國(guó)際站代理商專業(yè)的云服務(wù)商!
【華為云GaussDB】SQL遞歸寫法是一種高效的算法,可以用來查詢樹形結(jié)構(gòu)數(shù)據(jù),尤其是在業(yè)務(wù)分析中更是司空見慣。但是許多初學(xué)者往往不知如何下手,因此我們提供以下參考示例:
1. 首先,需要創(chuàng)建表并插入相關(guān)數(shù)據(jù)。以下是創(chuàng)建和插入語(yǔ)句:
CREATE TABLE organization
(
id bigint NOT NULL AUTO_INCREMENT COMMENT '組織id',
name varchar(50) NOT NULL COMMENT '組織名稱',
parent_id bigint NOT NULL COMMENT '父級(jí)id',
prIMARY KEY (id)

) COMMENT '組織機(jī)構(gòu)表' ;
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語(yǔ)句查詢樹形結(jié)構(gòu):
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 --根節(jié)點(diǎn)
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. 最后,您將看到如下所示的輸出結(jié)果:
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
【聚搜云】作為華為云國(guó)際站代理商,提供全方位的技術(shù)支持和解決方案。如果您在使用【華為云GaussDB】時(shí)遇到了任何問題或疑問,請(qǐng)不要猶豫,歡迎隨時(shí)聯(lián)系我們的服務(wù)團(tuán)隊(duì),我們將竭誠(chéng)為您服務(wù)。

kf@jusoucn.com
4008-020-360


4008-020-360
