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

SQL数据库实现递归查询的几种代码方法,第1张

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           小三                  

lishixinzhi/Article/program/MySQL/201311/29557

在你本地的管理工具中,有查询分析器,用它连接远程数据库,然后编写建表语句执行即可!

如下:

CREATE

TABLE

[dbo][表名](

[ID]

[int]

IDENTITY(1,1)

NOT

NULL,[Type]

[smallint]

NOT

NULL

CONSTRAINT

[PK_表名]

PRIMARY

KEY

CLUSTERED

(

[ID]

ASC

)

ON

[PRIMARY]

)

ON

[PRIMARY]

select 欠款总数=sum(MoneyStartDate),还款总数=sum(MoneyEnd )

from 表名

where MONTH(MoneyStart)= 几月你自己写 and ConditionTop='欠款'

select count(MoneyStartDate),count(MoneyEnd)

from 表名

where MONTH(MoneyStart)= and

and ConditionTop='欠款'

以上就是关于SQL数据库实现递归查询的几种代码方法全部的内容,包括:SQL数据库实现递归查询的几种代码方法、sql数据库中如何查询(sql怎么查询)、SQL查询某月份表的所有记录怎么写并且统计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10170240.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存