zoukankan      html  css  js  c++  java
  • B+树查询上下级(sql实现)

         B+树查询上下级(sql实现)
     
     
    use pubs
     
    --drop table employee
     
    create table employee
    (
     empId char(32) primary key,
     empName varchar(20),
     higherUpId char(32)
    )
     
    insert into employee values('0001','aa',null)
     
    insert into employee values('0002','bb','0001')
    insert into employee values('0003','cc','0001')
     
    insert into employee values('0004','dd','0002')
    insert into employee values('0005','ee','0002')
     
    insert into employee values('0006','ff','0003')
    insert into employee values('0007','gg','0003')
     
    insert into employee values('0008','hh','0004')
    insert into employee values('0009','ii','0004')
     
    insert into employee values('0010','jj','0007')
    insert into employee values('0011','kk','0007')
     
     
     
    --查下级和间接下级
    create proc proc_treeDownQuery
     @id varchar(20)
    as
     declare @temp varchar(2000)
     declare @tempCount nvarchar(2000)
     declare @sql varchar(5000)
     declare @count int
     
     set @sql = 'select empId from employee where higherUpId = ' + @id
     set @temp = 'select empId from employee where higherUpId = '+ @id
     
     while (1=1)
     begin
      set @tempCount = 'select @count=count(*) from employee where higherUpId in (' + @temp + ')'
      exec sp_executesql @tempCount,N'@count int output',@count output
     
      if (@count=0)
       begin
        break
       end
      else
       begin
        set @temp = 'select empId from employee where higherUpId in (' + @temp + ')'
        set @sql = @sql +  ' union ' + @temp
       end
      
     end
     
     exec(@sql)
     
     
    go
     
    exec proc_treeDownQuery '0001'
     

    --drop proc proc_treeUpQuery
     

    --查上级和间接上级
    create proc proc_treeUpQuery
     @id varchar(20)
    as
     declare @count int
     declare @sql varchar(5000)
     declare @temp varchar(2000)
     declare @tempCount nvarchar(2000)
     
     set @sql = 'select higherUpId from employee where empId = ' + @id
     set @temp = 'select higherUpId from employee where empId = ' + @id
     
     while (1=1)
     begin 
      set @tempCount = 'select @count=count(higherUpId) from employee where empId in (' + @temp + ')'
      exec sp_executesql @tempCount,N'@count int output',@count output
     
      if (@count=0)
       begin
        break
       end
      else
       begin
        set @temp = 'select higherUpId from employee where empId in (' + @temp + ')'
        set @sql = @sql + ' union ' + @temp
       end
     end
     
     exec(@sql)
    go
     

    exec proc_treeUpQuery '0009'
     
     
     

     
  • 相关阅读:
    TypeScript学习: 一、TypeScript的Hello World
    着重查看
    表内灌数
    jvm
    GitHub如何使用命令过滤筛选你想要的项目源代码
    [CVPR2021]Beyond Self-attention External Attention using Two Linear Layers for Visual Tasks
    [CIKM2019] AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks
    [IJCAI2017] Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks
    [SIGIR2020] Sequential Recommendation with Self-Attentive Multi-Adversarial Network
    ES6 Promise 的链式调用
  • 原文地址:https://www.cnblogs.com/wenjl520/p/1445778.html
Copyright © 2011-2022 走看看