oracle start with 和 where怎么搭配
时间: 2023-08-30 18:05:56 浏览: 802
oracle数据库startwith用法
`START WITH` 和 `WHERE` 都可以用来限制查询的结果。它们的区别在于,`START WITH` 用于指定树型结构的根节点,`WHERE` 用于对查询结果进行过滤。
在 `CONNECT BY` 查询中,`START WITH` 用于指定树的根节点,而 `WHERE` 用于对查询结果进行过滤。例如:
```
SELECT *
FROM employees
WHERE salary > 50000
START WITH manager_id IS NULL
CONNECT BY PRIOR employee_id = manager_id;
```
这个查询将以 `employees` 表中 `manager_id` 为 `NULL` 的记录作为根节点,按照 `employee_id = manager_id` 连接其他记录,最后返回 `salary > 50000` 的记录。
在普通的查询中,`START WITH` 也可以用于指定根节点,但是它必须和 `CONNECT BY` 一起使用。例如:
```
SELECT *
FROM employees
START WITH employee_id = 100
CONNECT BY PRIOR employee_id = manager_id;
```
这个查询将以 `employee_id = 100` 的记录作为根节点,按照 `employee_id = manager_id` 连接其他记录,最后返回整个树形结构。`WHERE` 可以用于对查询结果进行过滤。例如:
```
SELECT *
FROM employees
START WITH employee_id = 100
CONNECT BY PRIOR employee_id = manager_id
WHERE salary > 50000;
```
这个查询将以 `employee_id = 100` 的记录作为根节点,按照 `employee_id = manager_id` 连接其他记录,最后返回 `salary > 50000` 的记录。
阅读全文