SQL SERVER实现递归

本文介绍了在SQL Server中如何实现递归查询,包括在SQL Server 2000中利用函数查找父节点的所有子节点和依据子节点查找所有父节点的方法,以及SQL Server 2005及以上版本中直接使用递归查询的方式。详细展示了相关函数定义、调用示例和存储过程的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发过程中,我们经常遇到请求数据时,以及父节点查找所有子节点以及依据子节点查找所有父节点问题,其中最常用的就是依据某个省、查找该省下面的市、区、街道以及依据某个街道,查找到该街道所在区、市、省。
在此记录一下常用SQL语句;数据库设计如下:
这里写图片描述
一、由于在SQL SERVER2000中不支持递归,所以我们需要使用函数(表值函数)进行查询
1、依据父节点查找所有子节点
函数定义如下:

create  function f_GetAllChildrenAreaById(@id int)                  --得到一个地区的所有下级
    returns @temp_tb_areas table (id int,vName varchar(50),iParentId int ,iLevel int) as
begin
    insert @temp_tb_areas select id,vName,iParentId,iLevel from tb_Areas where id = @id
    while @@rowcount > 0
    begin
    insert @temp_tb_areas select id,vName,iParentId,iLevel from tb_Areas where iParentId in (select id 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值