建立一个数据表 Nodes

create table Nodes(NodeId int,NodeName nvarchar(50),ParentId int)

写入数据

insert into Nodes(NodeId ,NodeName ,ParentId)
values(1,'Node1',0),
(2,'Node2',0),
(3,'Node3',1),
(4,'Node4',1),
(5,'Node5',3),
(6,'Node6',5),
(7,'Node7',2)

数据表显示数据如下:

select * from Nodes

显示ParentId = 1 的全部层级数据

with [CTE] as (
    select nodeid,nodename,parentid from [nodes] c where c.[ParentId] = 1
    union all
    select c.nodeid,c.nodename,c.parentid from [CTE] p, [nodes] c where c.[ParentId] = p.[NodeId]
)
select * from [CTE]

显示nodeid = 1 的全部层级数据

with [CTE] as (
    select nodeid,nodename,parentid from [nodes] c where c.[NodeId] = 1
    union all
    select c.nodeid,c.nodename,c.parentid from [CTE] p, [nodes] c where c.[ParentId] = p.[NodeId]
)
select * from [CTE]

显示ParentId = 1 的全部层级数据和层级级别值

with [CTE] as (
    select nodeid,nodename,parentid, lev=1 from [nodes] c where c.parentid = 1
    union all
    select c.nodeid,c.nodename,c.parentid ,lev=p.lev + 1 from [CTE] p, [nodes] c where c.[ParentId] = p.[NodeId]
)
select * from [CTE]

显示NodeId = 1 的全部层级数据和层级级别值

with [CTE] as (
    select nodeid,nodename,parentid, lev=1 from [nodes] c where c.NodeId = 1
    union all
    select c.nodeid,c.nodename,c.parentid ,lev=p.lev + 1 from [CTE] p, [nodes] c where c.[ParentId] = p.[NodeId]
)
select * from [CTE]

以上SQL语句在SQL2005 测试通过。

MSSQL父子关系表的SQL查询(SQL Query for Parent Child Relationship)相关推荐

  1. sql server(MsSql)字段命名,表命名,视图命名,SQL语句书写参考

    @[TOC](sql server(MsSql)字段命名,表命名,视图命名,SQL语句书写参考) 对我个人来说,字段命名,表命名,视图命名,SQL语句书写都有一套自己的习惯,可以减少维护成本.减少不必 ...

  2. mysql查询父子关系树_swt 生成树[读取Mysql数据库中的父子关系表]

    数据库中的表结构: id        pid 1         0 2         1 3         1 4         2 6         2 5         4 需要生成 ...

  3. MYSQL数据库字段关联_MySQL数据库基础——操作关系表、连接查询

    MySQL数据库基础入门--day11 一.操作关联表 1.关联关系: 关联关系有:多对一.多对多和一对多. 一对一关联关系可以应用在以下几方面: (1)分割具有很多列的表 (2)由于安全原因而隔离表 ...

  4. SQL 遍历父子关系表(二叉树)获得所有子节点 所有父节点

    --建立測試環境 Create Table A (IDInt,  fatherIDInt,  NameVarchar(10) ) Insert A Select 1,        NULL,     ...

  5. oracle sys 查询语句,Oracle EBS-SQL (SYS-7):表单个性化查询.sql

    animation-timing-function animation-timing-function 规定动画的速度曲线.速度曲线定义动画从一套 CSS 样式变为另一套所用的时间.在平常的取值中,主 ...

  6. ORACLE表空间使用量查询SQL

    SELECT Upper(F.TABLESPACE_NAME) AS 表空间名     , round(D.TOT_GROOTTE_MB / 1024, 2) AS "总大小(G)" ...

  7. [aaronyang原创] Mssql 一张表3列的sql面试题,看你sql学的怎么样

    文章已经迁移到:http://www.ayjs.net/post/99.html 文章已经迁移到:http://www.ayjs.net/post/99.html 文章已经迁移到:http://www ...

  8. Python学习日志16 - 数据库SQL查询

    Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 Python学习日志16课 - 数据库SQL查询 DQL ...

  9. 数据库系列(5):SQL查询

    SQL (Structured Query Language:结构化查询语言) 是用来访问和操作数据库系统的,是一门ANSI 的标准计算机语言.目前最为广泛使用的数据库查询语言就是SQL了,尽管我么说 ...

  10. php 中 sql 查询语句怎么写,sql查询语句有哪些

    sql查询语句:1.查看表结构[SQL>DESC emp]:2.查询所有列[SQL>SELECT * FROM emp]:3.查询指定列:4.查询指定行:5.使用算术表达式:6.使用逻辑操 ...

最新文章

  1. mvc5入门示例博客(有惊喜)
  2. LeetCode算法题11:递归和回溯-解数独
  3. “源文件与模块生成时的文件不同,是否希望调试器使用它?”解决方案
  4. 【开源】对基于图像背景的字体生成、人体姿势预测、关键点检测、超分辨率等探讨...
  5. IDEA 设置护眼色RGB值
  6. QT保留小数点后几位
  7. 校园网络项目PT模拟
  8. TCP的粘包问题以及数据的无边界性
  9. 无法确认设备和计算机之间的连接,代码45的8种解决方法 - 硬件设备没有连接到计算机...
  10. PLC:学习笔记(西门子)3
  11. 黄金圈法则:成功者必备的深度思考方法
  12. UTL_FILE详解
  13. 从0开始一步一步部署walle
  14. 图解最常用的10个机器学习算法!(必须收藏)
  15. 手机视频网页点播服务器,手机视频点播系统搭建完整方案
  16. PS插件-2.5D Generator 2.0高级版 一键直接实现扁平图转2.5D立体风格
  17. 基于JAVA菜鸟驿站快递分发系统计算机毕业设计源码+系统+lw文档+部署
  18. 如何理解机器人学习和研究中的存量和增量
  19. js 向页面输出html,javascript怎么输出?
  20. 转化率最高的10个购物网站的经验

热门文章

  1. go 语言调用 python 把.dat格式数据转换为.mat
  2. uni-appH5端canvas压缩图片
  3. diskgenius克隆硬盘无法启动_克隆分区
  4. wow.js动画插件
  5. 关于软件设计使用中一些的原则简述
  6. Liang-Barsky算法思想及简单cpp实现
  7. 大连发展中韩跨境电子商务势在必行
  8. 什么是小托福考试?适合什么学生报考?
  9. 基于php校园官方网站的背景,校园微信平台的设计
  10. Enter的使用计算机,电脑键盘上enter为什么叫回车键