2016 - 2024

感恩一路有你

如何使用start with connect by prior递归用法

浏览量:2840 时间:2024-01-16 21:51:50 作者:采采

在Oracle数据库中,当需要查询树结构类型的数据时,可以使用start with connect by prior递归查询。这种方法非常方便,只需指定一个起始节点,就能查询到该节点以上以及以下的所有树形层级。

创建测试表

为了更好地介绍如何使用start with connect by prior递归查询,首先需要创建一个测试表,并结合示例来说明。

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;

查看表结构

为了简单起见,表t_menu只有两个字段:menu_id和parent_id。

向下递归查询

为了演示向下递归查询,选择menu_id为4的节点作为起始节点。以下是查询语句:

SELECT _id, _id, level
FROM t_menu t
START WITH _id  '4'
CONNECT BY _id  PRIOR _id;

PRIOR关键字的位置,与menu_id放在一起,表示向下查询。

向上递归查询

为了演示向上递归查询,选择menu_id为4的节点作为起始节点。以下是查询语句:

SELECT _id, _id, level
FROM t_menu t
START WITH _id  '4'
CONNECT BY PRIOR _id  _id;

PRIOR关键字和parent_id放在一起,表示按照父节点方向向上查询。

添加筛选条件

在以上查询语句中,还可以添加where条件语句,在递归查询结果集中根据条件进行筛选。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。