SQL Server 通过with as方法查询树型结构
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,一、with as 公用表表达式类似VIEW,但是不并没有创建对象,WITH AS 公用表表达式不创建对象,只能被后随的SELECT语句,其作用:1. 实现递归查询(树形结构)2. 可以在一个语句中多
千家信息网最后更新 2025年11月10日SQL Server 通过with as方法查询树型结构
一、with as 公用表表达式
类似VIEW,但是不并没有创建对象,WITH AS 公用表表达式不创建对象,只能被后随的SELECT语句,其作用:
1. 实现递归查询(树形结构)
2. 可以在一个语句中多次引用公用表表达式,使其更加简洁
二、非递归的公共表达式
可以是定义列或自动列和select into 效果差不多
--指定列with withTmp1 (code,cName)as( select id,Name from ClassUnis)select * from withTmp1--自动列with withTmp2 as( select * from ClassUnis where Author = 'system')select * from withTmp2
三、递归的方式
通过UNION ALL 连接部分。通过连接自身whit as 创建的表达式,它的连接条件就是递归的条件。可以从根节点往下查找,从子节点往父节点查找。只需要颠倒一下连接条件。例如代码中条件改为t.ID = c.ParentId即可
with tree as( --0 as Level 定义树的层级,从0开始 select *,0 as Level from ClassUnis where ParentId is null union all --t.Level + 1每递归一次层级递增 select c.*,t.Level + 1 from ClassUnis c,tree t where c.ParentId = t.ID --from ClassUnis c inner join tree t on c.ParentId = t.ID)select * from tree where Author not like'%/%'

还能通过option(maxrecursion Number) 设置最大递归次数。例如上诉结果Level 最大值为2表示递归两次。我们设置其值为1
with tree as( select *,0 as Level from ClassUnis where ParentId is null union all select c.*,t.Level + 1 from ClassUnis c,tree t where c.ParentId = t.ID)select * from tree where Author not like'%/%' option(maxrecursion 1)

好了这篇文章就介绍到这了,希望能帮助到你。
递归
表达式
条件
节点
公用
最大
对象
层级
语句
结构
查询
简洁
差不多
代码
作用
就是
效果
方式
最大值
树形
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据分析软件服务器
手机电话号码数据库
棋牌推饼软件开发
线上网络技术公司
使用数据库的语句是什么
关系数据库基本操作是什么
使用sql数据库制作选择题库
长沙财务软件开发价格
软件开发需求分析方法有哪些
快速的重庆双线服务器租用
厦门服务器回收哪家不错
数据库架构设计分层
斑强科技互联网
软件开发收获与感受
增加数据库日志命令
吃鸡战场服务器安装教程
网络安全模式找不到wifi
管理数据库的工具
数据库实训索引和视图
数据库保持多值依赖
我的世界2服务器突然进不去了
软件开发app开题报告
使用数据库的语句是什么
山东浪潮服务器虚拟化建设
软件开发诚信正直的实践方案
软件开发+付款方式
openfire服务器搭建
数据库应用时权限不足怎么办
拼多多代挂服务器
长沙群控云控软件开发商