SQL Server 通过with as方法查询树型结构
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,一、with as 公用表表达式类似VIEW,但是不并没有创建对象,WITH AS 公用表表达式不创建对象,只能被后随的SELECT语句,其作用:1. 实现递归查询(树形结构)2. 可以在一个语句中多
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
互联网科技图片
湖北九亚互联网络科技有限公司
科技互联网项目
互联网科技小贷
碳银互联网科技
沃里互联网科技
撒么互联网科技公司
衡水科技产业互联网平台
深圳市运趣互联网科技有限公司
阿里巴巴算科技企业还是互联网
顶级互联网科技成果有哪些
广州恒生互联网科技有限
长沙互联网科技
山东有哪些互联网科技公司
元气玛特互联网科技公司是外包吗
上海互联网科技公司ppt
珠海东科互联网科技有限公司
云南互联网科技学费
三亚科技创新互联网基地
互联网科技企业文化
科技互联网
互联网科技缩写
融贸通互联网科技
大白互联网科技
深圳市运趣互联网科技有限公司
银川新华互联网科技职业技术培训学校图片
苏州五指互联网络科技有限
互联网科技商业
中国科技和美国互联网
网互联网络科技