首页 > 数据库 >sql Server 递归查询

sql Server 递归查询

时间:2024-08-19 17:54:33浏览次数:12  
标签:Name 递归 LEVEL Server CTE sql 查询 Id

插入数据

insert into Department (Id,Name,ParentId)
VALUES (1,'总经办',0),
       (2,'研发部',1),
       (3,'人事部',1),
       (4,'设计部',2),
       (5,'行政部',3)

 

查询意图:

查询某个部门下所有子部门包括本部门所在层级

WITH CTE AS(
SELECT Id ,0 as LEVEL ,Name
FROM Department
WHERE ParentSId =0 -- 查询的第一层,一般父级的id为0
UNION ALL
SELECT D.Id ,LEVEL+1 ,Name
FROM Department D
INNER JOIN CTE ON CTE.Id=D.Id  --递归层查询
)
SELECT Id,LEVEL,Name 
FROM CTE
ORDER BY LEVEL,Id  ---递归结果查询

结果:

Id LEVEL Name
1 0 总经办
2 1 研发部
3 1 人事部
4 2 设计部
5 3 行政部

 

标签:Name,递归,LEVEL,Server,CTE,sql,查询,Id
From: https://www.cnblogs.com/sugarwxx/p/18347653

相关文章

  • PostgreSQL数据库的安装与部署(Linux)
    CentOS安装PostgreSQL版本信息:   CentOS版本:CentOS-7-x86_64-Minimal-1810   PostgreSQL版本:PostgreSQL10.10,64-bit 第一部分:PostgresSQL的安装1、安装rpm文件yuminstallhttps://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redh......
  • Linux 安装Mysql详细教程
    前言本文主要介绍在Linux环境下安装MySQL的过程。1:下载MySQL5.7的rpm安装包选择合适的版本,这里我们使用的是MySQL5.7.20;下载完成后发送到自己的CentOS7服务器里,这里可以通过Xftp上传MySQLhttps://www.mysql.com/1.在根目录下创建一个mysqlpackage目录mkdirmysqlpa......
  • 国产操作系统 离线部署MYSQL、NGINX、redis、JDK1.8
    目录1.1、龙蜥操作系统8.4【AnolisOS8.4GA】1.2、安装关键步骤说明2.1、安装必要的系统组件2.2、配置JDK2.3、安装redis2.4、安装nginx2.5、安装mysql3.1、启用防火墙3.2、开放业务端口3.3、修改SSH端口号为100223.4、配置特定端口指定IP访问4.1、网络设置4.2......
  • docker 创建MySQL
    dockerrun\      --restart=always\  #这个参数是mysql在docker启动的时候,也会跟着自动启动--namemysql8.0\   #这个参数是mysql容器的名字-p3306:3306\    #这个参数是端口号映射-eMYSQL_ROOT_PASSWORD=root\  #这个参数是是设......
  • MySQL中处理JSON数据:大数据分析的新方向
    1.简介1.1.概述在MySQL中处理JSON数据的能力是在MySQL5.7版本中引入的,并在后续的版本中不断得到增强。这使得MySQL能够直接操作和查询JSON格式的数据,极大地扩展了其处理复杂数据结构的能力。1.2.主要特点灵活性与可扩展性:JSON允许开发者存储不规则和嵌套的数据结......
  • 测试环境治理之MYSQL索引优化篇
    1治理背景测试环境这个话题对于开发和测试同学一定不陌生,大家几乎每天都会接触。但是说到对测试环境的印象,却鲜有好评:•环境不稳定,测试五分钟,排查两小时•基础建设不全,导致验证不充分,遗漏缺陷•多人共用,节点堵塞这些问题在行业内其实屡见不鲜,针对测试环境的治理,不得不引起......
  • WindowsServer系统下nginx代理问题
    部署vue打包后的dist文件夹后,重启nginx发现没生效,操作如下:1.停止redis,删除浏览器缓存并用无痕模式访问发现依然不生效,试着各种办法重新导入数据库数据也不行,nginx.exe-sstop依然能访问2.搜索发现可能是WindowsServer系统的问题,于是执行命令nginx-squit退出nginx......
  • 如何利用sockserver模块编程实现客户端并发
    前面用sock模块写的服务端和客户端,存在一个大问题,就是当运行多个客户端的时候,必须等一个客户端运行结束,另一个客户端才能实现与服务端的交流,这显然不符合现实中的需求。有没有什么办法解决这个问题呢?有人说没有,屁话。当然有,这就需要用到一个sockserver的模块,用定义类继承类的方式......
  • MYSQL排它锁获取机制
    在数据库系统中,排他锁(ExclusiveLock)用于确保在一个事务对数据进行修改时,其他事务无法访问或修改相同的数据。这种机制确保了数据的完整性和一致性。获取排他锁的方式包括自动获取和手动获取,下面我将详细整理这两种方式的机制。自动获取排他锁行级别的排他锁(自动)场景:当你执......
  • MySQL 排他锁之表级锁:使用与实例详解
    在数据库系统中,锁机制是确保数据一致性、完整性的重要手段。MySQL中的排他锁(ExclusiveLock)是防止数据在修改过程中被其他事务访问或修改的关键工具。排他锁不仅可以作用于单行数据,还可以作用于整个表。当排他锁用于表级别时,它可以阻止其他事务对表的任何操作,从而确保数据的一致性......