`
天空之城
  • 浏览: 405457 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL语句递归查找

 
阅读更多

通过sql语句递归查找所有下级或上级用户

1.MS Sql

with cte as
(
   
select Id,Pid,DeptName, 0 as lvl from Department
   
where Id = 2
   
union all
   
select d.Id,d.Pid,d.DeptName,lvl + 1 from cte c inner join Department d
   
on c.Id = d.Pid
)
select * from cte

2.Oracle

一、建表

  CREATE TABLE USERS.TBL_TEST

  (

  ID    NUMBER,

  NAME  VARCHAR2(100 BYTE),

  PID   NUMBER                                  DEFAULT 0

  )

  INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');

  INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1'

  INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');

  INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');

  INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');

  二、格式

  Select * from …. Where [结果过滤条件语句]

  Start with  [and起始条件过滤语句]

  Connect by prior [and中间记录过滤条件语句]

  三、查找所有下级

  select * from tbl_test start with id=1 connect by prior id=pid

  注意:此sql能查找id=1的数据的所有下级,写sql语句时要注意,因为是从id开始查找下级,所以connect by prior 子句的条件是id=pid

  四、查找所有上级

  select * from tbl_test start with id=5 connect by prior pid=id

  因为是从id开始查找上级,所以connect by prior 子句的条件是pid=d

分享到:
评论
1 楼 hy_zhym 2012-02-12  
select * from tbl_test start with id=1 connect by nocycle prior id=pid


加上nocycle这个关键字 才能不抛异常

相关推荐

    SQL语句 递归

    ### SQL语句递归:Oracle中的递归查询详解 在数据库查询语言中,递归查询是一种非常强大的功能,尤其在处理具有层次结构的数据时尤为重要。本文将深入探讨Oracle数据库中的递归查询,包括其基本语法、工作原理以及...

    excel 递归导出 sql语句

    "excel 递归导出 sql语句"的主题涉及如何利用递归算法来解决此类问题,目的是将具有层级关系的数据从Excel表格中导出并转化为SQL插入语句,以便轻松地将数据导入数据库。 首先,我们要理解什么是递归。递归是一种...

    SQL语句嵌套的实例.rar_SQL语句_sql 语句_sql嵌套

    3. **层次查询与递归**:在某些数据库系统中,如Oracle,可以使用CONNECT BY语句配合子查询来处理层级数据,例如查找组织结构的上下级关系。 4. **存在性子查询**:检查主查询的某行是否存在匹配子查询结果的行,...

    sql_函数实现三种父子递归

    总之,SQL递归函数是处理层次结构数据的强大工具,通过正向递归查找子节点、反向递归查找父节点以及构建面包屑导航路径,可以灵活地处理各种树形结构的问题。掌握这些技术能够帮助我们在数据库设计和查询中更加高效...

    sql递归查询实例2

    根据提供的信息,我们可以深入探讨如何使用SQL递归查询来获取所有属于特定`upperid`的数据及其子树。这里的关键在于理解递归查询的工作原理,并通过一个具体的例子来演示这一过程。 ### SQL递归查询概念 在关系型...

    SQL语句-递归查询、分组、统计.pdf

    在Oracle数据库中,可以使用`CONNECT BY`语句实现递归查询。例子中展示了如何通过`CONNECT BY`从`um_organization`表中查找特定`orgid`的上级和下级组织,以及生成整个组织结构树。`START WITH`指定递归的起始条件,...

    sql递归算法并停止到具体的层数

    要进行递归查询,我们可以使用SQL的WITH语句配合RECURSIVE关键字。WITH语句允许我们在一个查询中定义临时的结果集,而RECURSIVE则使得这个结果集可以通过递归的方式来构建。下面是一个简单的示例,用于获取某个会员...

    部分普通sql查询在hive中的实现方式

    ### 部分普通SQL查询在Hive中的实现方式 Hive是一款基于Hadoop的数据仓库工具,能够对存储在Hadoop文件系统中的数据集进行数据提取、转换、加载(ETL),这是一种可以简化MapReduce编程的工具。由于Hive的设计初衷...

    SQL语句大全(SQL语言学习)

    SQL语句大全是一部全面涵盖SQL基本概念、语法和高级特性的教程,旨在帮助初学者和有一定经验的开发者深入理解并熟练掌握SQL。下面将详细阐述SQL语言中的核心知识点。 一、SQL基础 1. 数据库操作:SQL允许创建、...

    sql server递归子节点、父节点sql查询表结构的实例

    在SQL Server中,递归查询是一种强大的工具,用于处理层级数据或树状结构的数据,例如组织结构、部门关系等。本文将深入探讨如何利用递归查询来获取子节点和父节点的信息。 一、查询当前部门下的所有子部门 在SQL ...

    一种MySQL数据库SQL递归查询的研究与实现.pdf

    这些数据库允许在SQL语句中直接对子查询进行递归调用,符合递归的本质。 然而,在MySQL中,由于不支持CTE,实现递归查询需要转换思路。可以通过将递归转换为迭代的方式,即使用循环和条件控制来替代递归。在递归...

    树查询的SQL语句

    一个属性数据库表,利用sql语句对其查询得到树形的数据库表的记录利用的是数据库的递归查询

    经典SQL语句集锦

    以上只是SQL语言的部分内容,"经典SQL语句集锦"文档可能会涵盖更详细的实例和高级主题,如窗口函数、分区、游标、递归查询、性能优化等,这些都是数据库管理和数据分析中不可或缺的知识。通过深入学习和实践,你将...

    中国省市县镇村SQL语句

    本文将深入探讨“中国省市县镇村SQL语句”这一主题,包括其重要性、常见数据结构、SQL查询技巧以及如何利用这些语句进行数据操作。 一、SQL语句的重要性 SQL(Structured Query Language)是用于管理和处理关系型...

    50个常用sql语句

    本资源“50个常用sql语句”汇集了日常数据库操作中常见的查询和管理命令,帮助用户更好地理解和运用SQL。以下是这些语句的详细解读: 1. **SELECT语句**:用于从数据库中检索数据,是最基本的查询语句。例如,`...

    中国省市区及海外地区sql

    在数据库设计中,这样的数据模型通常称为层次模型,它有利于进行递归查询,例如查找某个地区的所有下级区域。使用MySQL这样的关系型数据库管理系统(RDBMS),我们可以利用SQL语句方便地插入、查询、更新和删除这些...

    sql查询某个parentid下的所有childid

    执行上述SQL语句后,我们将得到如下结果: | ORG_ID | ORG_NAME | LEVEL | |--------|------------|-------| | 1 | 总部 | 1 | | 2 | 销售部 | 2 | | 3 | 研发部 | 2 | | 4 | 技术支持部 | 3 | | 5 | 售后服务部 | ...

    MSSQL中递归SQL查询语句实例说明-

    此外,标签中提到的`SQL注入`是一个安全问题,指的是攻击者通过输入恶意的SQL语句来获取未授权的数据或执行非法操作。防止SQL注入的最佳做法是使用参数化查询或存储过程,确保用户输入的数据不会直接拼接到SQL语句中...

    利用T-SQL语句实现的几个简单案例.pdf

    本篇文章将详细探讨几个利用T-SQL语句实现的简单案例,帮助你更好地理解和应用T-SQL。 1. **数据查询**: - `SELECT`语句是T-SQL中最基本的查询语句,用于从表中获取数据。例如,`SELECT * FROM Customers` 将返回...

Global site tag (gtag.js) - Google Analytics