• 求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 行)

     
  • 相关阅读:
    可视化数据库管理工具DataGrip使用详解
    MySQL常用函数
    你必须掌握的 21 个 JAVA 核心技术!
    idea中那些好用到飞起的插件
    Object使用
    单页面应用和多页面应用的区别及优缺点
    正则常用匹配
    npm --save-dev 和 --save 的区别
    js常用小技巧
    js复制文字到剪切板
  • 原文地址:https://www.cnblogs.com/sosoft/p/3451118.html
Copyright © 2020-2023  润新知