如何使用start with connect by prior遞歸用法
在Oracle數(shù)據(jù)庫(kù)中,當(dāng)需要查詢樹(shù)結(jié)構(gòu)類型的數(shù)據(jù)時(shí),可以使用start with connect by prior遞歸查詢。這種方法非常方便,只需指定一個(gè)起始節(jié)點(diǎn),就能查詢到該節(jié)點(diǎn)以上以及以下的所有
在Oracle數(shù)據(jù)庫(kù)中,當(dāng)需要查詢樹(shù)結(jié)構(gòu)類型的數(shù)據(jù)時(shí),可以使用start with connect by prior遞歸查詢。這種方法非常方便,只需指定一個(gè)起始節(jié)點(diǎn),就能查詢到該節(jié)點(diǎn)以上以及以下的所有樹(shù)形層級(jí)。
創(chuàng)建測(cè)試表
為了更好地介紹如何使用start with connect by prior遞歸查詢,首先需要?jiǎng)?chuàng)建一個(gè)測(cè)試表,并結(jié)合示例來(lái)說(shuō)明。
CREATE TABLE t_menu(
menu_id varchar2(32),
parent_id varchar2(32)
);
INSERT INTO t_menu VALUES ('1', '');
INSERT INTO t_menu VALUES ('2', '1');
INSERT INTO t_menu VALUES ('3', '1');
INSERT INTO t_menu VALUES ('4', '2');
INSERT INTO t_menu VALUES ('5', '3');
INSERT INTO t_menu VALUES ('6', '4');
COMMIT;
SELECT * FROM t_menu;
查看表結(jié)構(gòu)
為了簡(jiǎn)單起見(jiàn),表t_menu只有兩個(gè)字段:menu_id和parent_id。
向下遞歸查詢
為了演示向下遞歸查詢,選擇menu_id為4的節(jié)點(diǎn)作為起始節(jié)點(diǎn)。以下是查詢語(yǔ)句:
SELECT _id, _id, level
FROM t_menu t
START WITH _id '4'
CONNECT BY _id PRIOR _id;
PRIOR關(guān)鍵字的位置,與menu_id放在一起,表示向下查詢。
向上遞歸查詢
為了演示向上遞歸查詢,選擇menu_id為4的節(jié)點(diǎn)作為起始節(jié)點(diǎn)。以下是查詢語(yǔ)句:
SELECT _id, _id, level
FROM t_menu t
START WITH _id '4'
CONNECT BY PRIOR _id _id;
PRIOR關(guān)鍵字和parent_id放在一起,表示按照父節(jié)點(diǎn)方向向上查詢。
添加篩選條件
在以上查詢語(yǔ)句中,還可以添加where條件語(yǔ)句,在遞歸查詢結(jié)果集中根據(jù)條件進(jìn)行篩選。