查询某员工的领导:
select * from emp start with mgr='7902' connect by prior mgr=empno
以下摘自:
http://blog.csdn.net/Bobwu/article/details/3539604
今天发现在oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是:
select ... from tablename start with cond1
connect by cond2
where cond3;
简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:
id,parentid那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。
用上述语法的查询可以取得这棵树的所有记录。
其中COND1是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
COND2是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR ID=PRAENTID就是说上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录。
COND3是过滤条件,用于对返回的所有记录进行过滤。
对于oracle进行简单树查询(递归查询)
DEPTID PAREDEPTID NAME
NUMBER NUMBER CHAR (40 Byte)
部门id 父部门id(所属部门id) 部门名称
通过子节点向根节点追朔.
Sql代码
select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid
通过根节点遍历子节点.
Sql代码
select * from persons.dept start with paredeptid=0 connect by prior deptid=paredeptid
可通过level 关键字查询所在层次.
Sql代码
select a.*,level from persons.dept a start with paredeptid=0 connect by prior deptid=paredeptid
再次复习一下:start with ...connect by 的用法, start with 后面所跟的就是就是递归的种子。
递归的种子也就是递归开始的地方 connect by 后面的"prior" 如果缺省:则只能查询到符合条件的起始行,并不进行递归查询;
connect by prior 后面所放的字段是有关系的,它指明了查询的方向。
练习: 通过子节点获得顶节点
select FIRST_VALUE(deptid) OVER (ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING)
AS firstdeptid from persons.dept start with deptid=76 connect by prior paredeptid=deptid
分享到:
相关推荐
在SQL面试中,掌握核心概念和技术是至关重要的。以下是一些关键知识点的详细解析: 1. **SQL(Structured Query Language)**:SQL是用于管理关系数据库的标准编程语言,包括数据查询、更新、插入和删除等操作。...
SQL Server 面试题目总结 在这篇文章中,我们将总结一些常见的 SQL Server 面试题目,并提供相应的答案和解释。这些题目涵盖了基本的 SQL 语句、数据处理、数据分析等方面的知识。 题目 1: 用一条 SQL 语句查询出...
### 经典SQL面试题解析 #### 颇具挑战性的SQL面试题——删除冗余记录 **题目背景与分析** 在本题中,我们面对的是一个常见的问题:如何有效地处理数据库中的冗余数据。在实际应用中,由于各种原因(如数据导入...
根据提供的文件信息,我们可以整理出以下几个关键的 SQL 面试题目及解答: ### 1. 使用 `GROUP BY` 处理数据 **题目描述**: 假设有一个表 #tmp,包含两列:日期 rq 和胜负标记 shengfu(其中 shengfu 可能为空)...
很常见的面试题目 希望对大家找工作有帮助 特别是应届毕业生 SQL
根据提供的信息,我们可以详细解析这些SQL面试题目以及给出的示例答案,并且深入理解每一道题目背后的原理与应用场景。 ### 風险1: 查询身份证号码为440401430103082的申请日期 #### 问题描述 此题目要求查询在`g_...
这份压缩包文件,名为"SQL题目",显然包含了与.NET环境下的SQL Server面试相关的试题,旨在帮助应聘者准备数据库相关的面试环节。以下是一些重要的知识点,涵盖.NET开发中与SQL Server相关的面试常见问题和解答: 1...
根据给定的文件标题、描述、标签以及部分内容,我们可以从中提炼出以下详细的IT知识点,主要聚焦于SQL语言的基础操作及面试常考知识点: ### SQL语言基础分类与功能 #### 数据定义语言(DDL) - `CREATE DATABASE`:...
12.SQL面试题目汇总
以下是一些常见的SQL面试题目及其解答,这些题目涵盖了数据建模、子查询和条件查询等核心概念。 首先,创建学生表S、课程表C和学生课程表SC的建表语句如下: ```sql CREATE TABLE S ( id INTEGER PRIMARY KEY, ...
本资源“Oracle学习开发常用的SQL和存储过程学习(内含SQL面试题目和存储过程,函数面试题目).zip”提供了全面的学习材料,旨在帮助初学者和求职者提升在Oracle数据库中的SQL查询和存储过程编写技能。 SQL...
文章Hive面试题SQL测试题目所需数据,包含建表语句 测试数据等等...................
在SQL面试中,数据查询和处理能力是评估候选人技能的关键因素。以下是对给定面试题目的详细解答: 1. **按日期汇总收付款记录**: 这个问题需要我们根据日期对收付款进行汇总。假设收付款记录表(JKJL)结构如上所...
题目包含:1.基本SQL-SELECT语句 2.过滤和排序数据 3.单行函数 4.多表查询 5.分组函数 6.子查询 7.创建和管理表 8.数据处理 9.约束 10.视图 11.数据库对象 12.企业sql笔试题目 等
下面将对两道常见的SQL面试题目进行深入解析,这两道题目主要围绕多表之间的数据查询展开,旨在考察应试者对复杂SQL查询语句的理解与应用能力。 ### 题目一:员工与部门关联查询 **背景描述**: 假设公司数据库中...
在SQL面试中,面试官通常会考察候选人对于数据库理论、查询优化、数据完整性以及事务处理等方面的知识。以下是对题目中涉及的SQL知识点的详细解释: 1. **触发器(Triggers)**:触发器是一种特殊的存储过程,当...
以下是一些基于提供的面试题目的SQL知识点解析: 1. **子查询比较**: 题目要求找出"001"课程成绩高于"002"课程的所有学生。这里使用了子查询来分别获取两个课程的成绩,然后通过比较找到满足条件的学生。 2. **...
### 2. SQL Server 2005 特性 - **版本特性**:SQL Server 2005 相比之前的版本,增加了许多新功能和改进,比如增强的安全性、更强大的查询性能以及更好的管理工具等。 - **查询优化**:SQL Server 2005 提供了更...
以下是一些经典的SQL面试题目,它们涵盖了基础到高级的不同层次,旨在检验候选人在数据库管理和数据分析方面的技能。 1. **选择查询(SELECT)** - 基本的SELECT语句:如何从一个表中选择所有列? - WHERE子句:...