sqlserver创建表结构时添加约束(SQL Server 通过with as方法查询树型结构)
类别:数据库 浏览量:2979
时间:2021-10-20 08:24:28 sqlserver创建表结构时添加约束
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)
好了这篇文章就介绍到这了,希望能帮助到你。
您可能感兴趣
- sqlserver创建表结构时添加约束(SQL Server 通过with as方法查询树型结构)
- python中startswith使用教程(Python os.access用法实例)
- mysql 分片键规则(MySql8 WITH RECURSIVE递归查询父子集的方法)
- laravel关联模型字段冲突(浅谈laravel中的关联查询with的问题)
- with(nolock)的用法
- SQL中的with as的使用
- SQL SERVER中使用WITH TIES获取前几行数据
- laravel模型个数(laravel withCount 统计关联数量的方法)
- laravel关于视图使用语法(在laravel中使用with实现动态添加where条件)
- sql server与erp的结合应用(SQL Server中with as使用介绍)
- js中的this与with关键字
- 《无敌破坏王2》 不聊彩蛋,聊聊我从动画里看到的现实那些事儿(无敌破坏王2不聊彩蛋)
- 《寄生虫》 三观不正 人类悲欢从来不相通,感同身受也并非本能(寄生虫三观不正)
- 这部动漫中的女孩子,可比101女孩更加励志(这部动漫中的女孩子)
- 《白狐的人生》热拍 贾征宇偶像包袱难自弃 图(白狐的人生热拍)
- 七夕取消了,牛郎织女没做核酸七夕已经取消(牛郎织女没做核酸七夕已经取消)
- 网友抵制 多地取消 夏日祭 为何惹众怒(网友抵制多地取消)
热门推荐
- 服务器宝塔面板怎么安装(VPS安装宝塔面板+云锁过程记录)
- 谷歌云服务账号详解(谷歌云服务器一年到期后,怎么继续免费使用?)
- php静态类和动态类的区别(PHP Trait代码复用类与多继承实现方法详解)
- vue双向数据绑定js如何实现(纯JS如何实现vue.js下的双向绑定功能)
- 读取浏览器历史的行为(解析浏览器的一些“滚动”行为鉴赏)
- python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)
- C#不建议在构造函数中调用虚方法或虚属性
- 宝塔面板密码忘记了怎么解锁(宝塔面板忘记用户名密码怎么找回)
- html代码简单特效(HTML实现代码雨源码及效果示例)
- SQL Server中如何将数据导出为XML或Json文件