数据库  SQL 遍历父子关系表(二叉树)获得所有子节点 所有父节点

创建表

Create Table A

(IDInt,

fatherIDInt,

NameVarchar(10)

)

Insert A Select 1,        NULL,       'tt'

Union All Select 2,        1,          'aa'

Union All Select 3,        1,          'bb'

Union All Select 4,        2,          'cc'

Union All Select 5,        2,          'gg'

Union All Select 6,        4,          'yy'

Union All Select 7,        4,          'jj'

Union All Select 8,        7,           'll'

Union All Select 9,        NULL,  'uu'

Union All Select 10,       9,         'oo'

GO

创建函数

//取字子节点

Create Function GetChildren(@ID Int)

Returns @Tree Table (ID Int, fatherID Int, Name Varchar(10))

As

Begin

Insert @Tree Select ID, fatherID, Name From A Where fatherID = @ID

While @@Rowcount > 0

Insert @Tree Select A.ID, A.fatherID, A.Name From A A Inner Join @Tree B

On A.fatherID = B.ID And A.ID Not In (Select ID From @Tree)

Return

End

GO

//取父节点

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

GO

ALTER Function [dbo].[GetParent](@ID Int)

Returns @Tree Table (ID Int, fatherID Int, NameVar Varchar(10))

As

Begin

Insert @Tree Select ID, fatherID, NameVar From A Where ID = @ID

While @@Rowcount > 0

Insert @Tree Select A.ID, A.fatherID, A.NameVar From A A Inner Join

@Tree B On A.ID = B.fatherID And A.ID Not In (Select ID From @Tree)

Return

End

--測試

Select * From dbo.GetChildren(1)

Select * From dbo.GetParent(9)

GO

mysql查询父子关系树_数据库 SQL 遍历父子关系表(二叉树)获得所有子节点 所有父节点...相关推荐

  1. mysql查询学号和姓名_数据库SQL语句中 查询选修了全部课程的学生的学号和姓名...

    一.SQL语言查询选修了全部课程的学生的学号和姓名. 两种解决途径: 第一种: 我们可以表示为在SC表中某个学生选修的课程数等于C表中课程总数.相应的SQL语言如下: selectS#,SNAMEfr ...

  2. mysql查询自定义列明_自定义sql查询出的结果集的列名都是数据库的字段名。

    代码如下: @Override public DataPageDTO empsPage(EmpListPageParams params) { FileSqlManager fm = new File ...

  3. mysql查询学号得出专业_用SQL的语言,也就是数据库的语言,查询Student表中计算机专业的男学生学号,姓名,专业名,性别...

    060010101王林0600101计算机男1980-2-100:00:0050NULL060010102陈明0600101计算机男1981-1-10:00:0050NULL060010103王燕06 ...

  4. mysql 查询分析工具下载_数据库管理系统-DB查询分析器(数据库查询分析软件)6.04 中文免费版-东坡下载...

    DB查询分析器是一个功能强大的万能数据库查询分析软件,支持对各种关系数据源(包括Oracle.Sybase.DB2.Informix.MS SQL SERVER.MYSQL.MS ACCESS.Par ...

  5. mysql查询cpu使用率100%_数据库CPU使用率100% 排查记

    1.背景: 在监控线上数据库的运行是否安全.正常的过程中,cpu 使用率是一个重要的指标,一旦cpu使用率飙升至90%+甚至达到100%,必然会对数据库的正常工作产生影响. 在排查数据库的cpu 飙升 ...

  6. mysql查询特殊符号时_数据库查询中的特殊字符的问题_MySQL

    在进行数据库的查询时,会经常遇到这样的情况: 例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的字符,例如单引号,"|"号,双引号或者连字符& ...

  7. mysql查询临时表是否存在_[转]SQL判断临时表是否存在

    判断临时表是否存在 Way 1 if(exists(select name from tempdb..sysobjects where name like'%temptab%' and type='U ...

  8. mysql查询和某人一样_使用sql语句实现查询某人的排名,分数相同排名相同

    一.第一种形式排名 如:4个学生的分数分别是:100.90.90.80 排名结果为:第一.第二.第二.第三 SELECT count(DISTINCT score) FROM tbl_score WH ...

  9. mysql查询男生女生多少人_数据库查询男女的人数分别是多少

    展开全部 数据库查32313133353236313431303231363533e59b9ee7ad9431333365646263询男女的人数: 1.select stuClass,count(s ...

  10. sql 查询上个月的数据_数据分析-SQL 进阶篇 多表查询

    知识点 一.表的加法 Union:删除表中的重复值 union al:包含表中所有内容,包括重复值 二.表的联结 联结:join 联结分为以下五种: 交叉联结(cross join)又称为笛卡尔积:将 ...

最新文章

  1. 计算机初级学哪个公需课,西安职称评审申报你遇到以下问题了吗?
  2. ocr识别技术-车牌识别一体机的核心关键
  3. 转 OFBiz 菜单组件(menu-widget)指引
  4. android webview底部黑条,去掉UIWebView底部的黑条
  5. 腾讯机智在GTC 2019
  6. 选择Java加密算法第3部分–公钥/私钥非对称加密
  7. 【转】ABP源码分析二十八:ABP.MemoryDB
  8. 信息学奥赛一本通 1054:三角形判断 | OpenJudge NOI 1.4 16
  9. leetcode题解108-将有序数组转换为二叉排序树
  10. jsp下拉列表java_java – JSP:下拉列表2取决于下拉列表1
  11. C语言八进制和十六进制数
  12. python 绘制并列条形图并添加数据标签
  13. c语言学习宝典怎么样,C语言学习宝典
  14. 百度定位出现162错误码
  15. 区块链技术在“三资”监管领域的应用
  16. idea中字体由繁体变简体
  17. SQL Server 2008 R2 是免费版下载地址
  18. EXCEL startup.exe 宏病毒
  19. [读书笔记]2.标准误差 标准差 信度 实例计算说明
  20. 基于51单片机的数码管闹钟设计

热门文章

  1. DM 关键字、屏蔽关键字
  2. Linux如何查看CPU温度
  3. 前端图片压缩 - H5Uni-App图片压缩
  4. 如何选择剑桥英语KET,PET课程和老师
  5. Python 字符串 .format 方法详解
  6. 3 staruml 流程图,staruml流程图(staruml怎么画顺序图)
  7. 英语单词记忆(词缀 / 前缀)
  8. 深圳最牛街道办:腾讯华为设总部,百家上市公司年营收超2万亿
  9. 【我的OpenGL学习进阶之旅】学习OpenGL ES 3.0 的实战 Awsome Demo (下)之 图片转场和轮播特效专场
  10. 转载:TD之父李世鹤:TD即将安乐死