zoukankan      html  css  js  c++  java
  • 求SQL语句递归的算法

    表结构是这样的

    部门    上级部门    
    A           B
    B           C
    C           D
    A           A
    B           B
    C           C

    求一条SQL语句,根据A查其上级部门,查询结果为
    上级部门
    B
    C
    D

    =================================================

    用函数
    create table tb (部门 varchar(20),上级部门 varchar(20))

    insert into tb select 'A','B' union all select 'B','C' union all select 'C','D' 
    union all select 'A','A' union all select 'B','B' union all select 'C','C'

    --select * from tb
    create function test_f (@name varchar(20))
    returns @ta table(上级部门 varchar(20))
    as 
    begin 
    --select @name=上级部门 from tb where 部门=@name and 部门!=上级部门
    while exists(select 1 from tb where 部门=@name and 部门!=上级部门)
    begin
    insert @ta select 上级部门 from tb where 部门=@name and 部门!=上级部门
    select @name=上级部门 from tb where 部门=@name and 部门!=上级部门
    end
    return
    end

    select * from dbo.test_f('A')

    删除:
    drop function test_f
    drop table tb

    上级部门                 
    -------------------- 
    B
    C
    D

    (所影响的行数为 3 行)

     
  • 相关阅读:
    2-5
    2-3
    2-2
    2-1
    1-1
    实验6-1 求数组及其下标
    实验4-2 关于求阶乘的运算
    作业 3-5 switch语句的应用
    作业3-6 查询水果单价
    作业3-4 判断是不是闰年
  • 原文地址:https://www.cnblogs.com/sosoft/p/3451118.html
Copyright © 2011-2022 走看看