SQL Server 通过with as方法查询树型结构
发表于:2024-11-13 作者:千家信息网编辑
千家信息网最后更新 2024年11月13日,一、with as 公用表表达式类似VIEW,但是不并没有创建对象,WITH AS 公用表表达式不创建对象,只能被后随的SELECT语句,其作用:1. 实现递归查询(树形结构)2. 可以在一个语句中多
千家信息网最后更新 2024年11月13日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中构建数据库
烟台乾乾互联网科技有限公司
数据库多连接查询技巧
曙光服务器关机显示黄灯报警
服务器必备的方块
南昌立得软件开发有限公司
discuz 清空数据库
怎样登陆数据库
.net读写数据库类
淘宝采用什么数据库
数据库更新工作流程
怎么上传视频到数据库
web数据库安全技术
安徽股票软件开发公司
南宁手机软件开发工程师
万得数据库怎么查询价格变动
2003网站服务器安全设置
关于网络安全主题图片
浪潮5266m5服务器导轨
魔兽世界数据库怀旧服app
深圳市陆通网络技术有限公司