`

SQL面试题目之二

 
阅读更多
查询某员工的领导:
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 面试题目汇总

    在SQL面试中,掌握核心概念和技术是至关重要的。以下是一些关键知识点的详细解析: 1. **SQL(Structured Query Language)**:SQL是用于管理关系数据库的标准编程语言,包括数据查询、更新、插入和删除等操作。...

    SQL面试题目-sqlServer

    SQL Server 面试题目总结 在这篇文章中,我们将总结一些常见的 SQL Server 面试题目,并提供相应的答案和解释。这些题目涵盖了基本的 SQL 语句、数据处理、数据分析等方面的知识。 题目 1: 用一条 SQL 语句查询出...

    经典sql面试题

    ### 经典SQL面试题解析 #### 颇具挑战性的SQL面试题——删除冗余记录 **题目背景与分析** 在本题中,我们面对的是一个常见的问题:如何有效地处理数据库中的冗余数据。在实际应用中,由于各种原因(如数据导入...

    sql面试题目和答案sql面试题目和答案sql面试题目和答案

    根据提供的文件信息,我们可以整理出以下几个关键的 SQL 面试题目及解答: ### 1. 使用 `GROUP BY` 处理数据 **题目描述**: 假设有一个表 #tmp,包含两列:日期 rq 和胜负标记 shengfu(其中 shengfu 可能为空)...

    SQL面试题目 大公司的面试题

    很常见的面试题目 希望对大家找工作有帮助 特别是应届毕业生 SQL

    SQL面试题目,有例子。

    根据提供的信息,我们可以详细解析这些SQL面试题目以及给出的示例答案,并且深入理解每一道题目背后的原理与应用场景。 ### 風险1: 查询身份证号码为440401430103082的申请日期 #### 问题描述 此题目要求查询在`g_...

    .net 中sql面试题目,面试宝典

    这份压缩包文件,名为"SQL题目",显然包含了与.NET环境下的SQL Server面试相关的试题,旨在帮助应聘者准备数据库相关的面试环节。以下是一些重要的知识点,涵盖.NET开发中与SQL Server相关的面试常见问题和解答: 1...

    SQL面试题(很全,带答案)

    根据给定的文件标题、描述、标签以及部分内容,我们可以从中提炼出以下详细的IT知识点,主要聚焦于SQL语言的基础操作及面试常考知识点: ### SQL语言基础分类与功能 #### 数据定义语言(DDL) - `CREATE DATABASE`:...

    12.SQL面试题目汇总.doc

    12.SQL面试题目汇总

    SQL面试(SQL面试的一些题目和答案)

    以下是一些常见的SQL面试题目及其解答,这些题目涵盖了数据建模、子查询和条件查询等核心概念。 首先,创建学生表S、课程表C和学生课程表SC的建表语句如下: ```sql CREATE TABLE S ( id INTEGER PRIMARY KEY, ...

    Oracle学习开发常用的SQL和存储过程学习(内含SQL面试题目和存储过程,函数面试题目).zip

    本资源“Oracle学习开发常用的SQL和存储过程学习(内含SQL面试题目和存储过程,函数面试题目).zip”提供了全面的学习材料,旨在帮助初学者和求职者提升在Oracle数据库中的SQL查询和存储过程编写技能。 SQL...

    Hive面试题SQL测试题目1数据

    文章Hive面试题SQL测试题目所需数据,包含建表语句 测试数据等等...................

    sql面试题目.doc

    在SQL面试中,数据查询和处理能力是评估候选人技能的关键因素。以下是对给定面试题目的详细解答: 1. **按日期汇总收付款记录**: 这个问题需要我们根据日期对收付款进行汇总。假设收付款记录表(JKJL)结构如上所...

    sql笔试面试题目(oracle,含答案)

    题目包含:1.基本SQL-SELECT语句 2.过滤和排序数据 3.单行函数 4.多表查询 5.分组函数 6.子查询 7.创建和管理表 8.数据处理 9.约束 10.视图 11.数据库对象 12.企业sql笔试题目 等

    两道常见的sql面试题目

    下面将对两道常见的SQL面试题目进行深入解析,这两道题目主要围绕多表之间的数据查询展开,旨在考察应试者对复杂SQL查询语句的理解与应用能力。 ### 题目一:员工与部门关联查询 **背景描述**: 假设公司数据库中...

    SQL面试题目汇总.pdf

    在SQL面试中,面试官通常会考察候选人对于数据库理论、查询优化、数据完整性以及事务处理等方面的知识。以下是对题目中涉及的SQL知识点的详细解释: 1. **触发器(Triggers)**:触发器是一种特殊的存储过程,当...

    SQL面试题目.pdf

    以下是一些基于提供的面试题目的SQL知识点解析: 1. **子查询比较**: 题目要求找出"001"课程成绩高于"002"课程的所有学生。这里使用了子查询来分别获取两个课程的成绩,然后通过比较找到满足条件的学生。 2. **...

    sqlserver面试他常见问题,一些大型公司的面试题目

    ### 2. SQL Server 2005 特性 - **版本特性**:SQL Server 2005 相比之前的版本,增加了许多新功能和改进,比如增强的安全性、更强大的查询性能以及更好的管理工具等。 - **查询优化**:SQL Server 2005 提供了更...

    经典sql面试题目----无私奉献了!!!

    以下是一些经典的SQL面试题目,它们涵盖了基础到高级的不同层次,旨在检验候选人在数据库管理和数据分析方面的技能。 1. **选择查询(SELECT)** - 基本的SELECT语句:如何从一个表中选择所有列? - WHERE子句:...

Global site tag (gtag.js) - Google Analytics