知识大全 SQL数据库实现递归查询的几种代码方法

Posted

篇首语:天下无难事,只怕有心人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQL数据库实现递归查询的几种代码方法相关的知识,希望对你有一定的参考价值。

SQL数据库实现递归查询的几种代码方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  SQL数据库实现递归查询的几种代码方法 表结构

  ProductCategory

  CategoryID Level ParentCategoryID

  数据

  

  

  

  

  

  

  T SQL

  WITH CategoryTemp(CategoryID ParentCategoryID) 临时表用来保存查到的Category

  (

  SELECT CategoryID ParentCategoryID FROM ProductCategory WHERE ParentCategoryID<= 将所有的第一层查出来作为初始数据 需要查第几层或者哪个ParentCategoryID下面所有的 N层 把ParentCategoryID赋相关的值即可

  UNION ALL 查询N层

  SELECT pc CategoryID ParentCategoryID FROM ProductCategory pc

  LEFT JOIN CategoryTemp ct ON pc ParentCategoryID=ct CategoryID

  WHERE ParentCategoryID> 因为第一层前面已经查出来了 所以这里把第一层筛选掉

  )

  SELECT CategoryID ParentCategoryID FROM CategoryTemp

  结果

  

  

  

  

  

  

  如果把ParentCategoryID赋为 结果则为

  

  

  实例

  ID 是否为部门   部门名   上级ID        y                       部门             y                       部门             n                       张三              n                       李二              y                       部门             n                       王五              y                       部门3       n                       小三         我想找询   ID   值为      下级的所有人员包括下级部门的所有人员

   创建查询函数 create   function   f_id( @id   int 要查询的id )returns   @re   table(id   int level   int) as begin declare   @l   int set   @l= insert   @re   select   id @l from   表   where   上级id=@id while   @@rowcount> begin set   @l=@l+ insert   @re   select   a id @l from   表   a   join   @re   b   on   a 上级id=b id   and   b level=@l end return end go

   调用函数进行查询 select   a *   from   表   a   join   f_id( )   b   on   a id=b id

  联合查询

   测试数据 create   table   表(ID   int 是否为部门   char( ) 部门名   varchar( ) 上级ID   int) insert   表   select      y 部门    union   all   select   y 部门    union   all   select   n 张三    union   all   select   n 李二    union   all   select   y 部门 union   all   select   n 王五    union   all   select   y 部门 union   all   select   n 小三    go

   创建查询函数 create   function   f_id( @id   int 要查询的id )returns   @re   table(id   int level   int) as begin declare   @l   int set   @l= insert   @re   select   id @l from   表   where   上级id=@id while   @@rowcount> begin set   @l=@l+ insert   @re   select   a id @l from   表   a   join   @re   b   on   a 上级id=b id   and   b level=@l end return end go

   调用函数进行查询 select   a *   from   表   a   join   f_id( )   b   on   a id=b id go

   删除测试 drop   table   表 drop   function   f_id

  /* 测试结果

  ID                     是否为部门   部门名                 上级ID                                                  n           小三                  

cha138/Article/program/MySQL/201311/29557

相关参考

知识大全 oracle数据库性能监控的SQL的几种情况

oracle数据库性能监控的SQL的几种情况  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  监控

知识大全 sql server 2005中使用with实现递归的方法

    复制代码代码如下:  WITHfw_requestion_note_temp(old_apply_id)AS(取根节点放入临时表SELECTold_apply_idFROMfw_request

知识大全 通用SQL数据库查询语句精华使用简介

通用SQL数据库查询语句精华使用简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一简单查询  

知识大全 数据库查询结果的动态排序

  在公共新闻组中一个经常出现的问题是怎样才能根据传递给存储过程的参数返回一个排序的输出?在一些高水平专家的帮助之下我整理出了这个问题的几种解决方案  一用IFELSE执行预先编写好的查询  对于大多

知识大全 数据库中如何使用SQL查询连续号码段

数据库中如何使用SQL查询连续号码段  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在ITPUB

知识大全 asp数据库查询代码

cha138/Article/program/net/201311/14104

知识大全 提高SQL性能的几种方法

JAVA进阶:提高SQL性能的几种方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  从INSE

知识大全 PL/SQL中的几种异常处理方法

PL/SQL中的几种异常处理方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PL/SQL里有

知识大全 基于SQL中的数据查询语句汇总

基于SQL中的数据查询语句汇总  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!以下是对SQL中的数据

知识大全 SQL入门:复杂查询

SQL入门:复杂查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  复杂查询  DB通用数据库允