【Oracle】层次查询步骤,理解 where 条件执行顺序
文章目录
- Oracle 层次查询
-
- 1. 基本语法
- 2. 实例验证
-
- 2.1 不带where层次查询
- 2.2 where HR 层次查询
- 2.3 where IT 层次查询
Oracle 层次查询
1. 基本语法
SELECT *
FROM table_name
WHERE condition
START WITH condition1
CONNECT BY [NOCYCLE] PRIOR condition2;
层析查询的执行顺序如下:
- START WITH 子句:首先执行 START WITH 子句,确定层次查询的根节点。
- CONNECT BY 子句:然后执行 CONNECT BY 子句,递归地查找子节点,构建层次结构。
- WHERE 子句:最后执行 WHERE 子句,对已经构建好的层次结构进行过滤。
因此,如果你在层次查询中加入 WHERE 条件,WHERE 子句会在 START WITH 和 CONNECT BY 子句之后执行。也就是说,层次查询会先构建出完整的层次结构,然后再根据 WHERE 子句进行过滤。
2. 实例验证
-- 创建示例表
CREATE TABLE a_auth.employees_test (
employee_id NUMBER PRIMARY KEY,
employee_name VARCHAR2(100),
manager_id NUMBER,
department VARCHAR2(50)
);
-- 插入数据
INSERT INTO a_auth.