循环查询sql server(SQL Server 树形表非循环递归查询的实例详解)
类别:数据库 浏览量:929
时间:2022-01-28 01:37:12 循环查询sql server
SQL Server 树形表非循环递归查询的实例详解很多人可能想要查询整个树形表关联的内容都会通过循环递归来查...事实上在微软在SQL2005或以上版本就能用别的语法进行查询,下面是示例。
--通过子节点查询父节点 WITH TREE AS( SELECT * FROM Areas WHERE id = 6 -- 要查询的子 id UNION ALL SELECT Areas.* FROM Areas, TREE WHERE TREE.PId = Areas.Id ) SELECT Area FROM TREE --通过父节点查询子节点 WITH TREE AS( SELECT * FROM Areas WHERE id = 7 -- 要查询的子 id UNION ALL SELECT Areas.* FROM Areas, TREE WHERE TREE.Id = Areas.PId ) SELECT Area FROM TREE
通过子节点查询父节点查询结果为:
修改代码为
--通过子节点查询父节点 declare @area varchar(8000); WITH TREE AS( SELECT * FROM Areas WHERE id = 6 -- 要查询的子 id UNION ALL SELECT Areas.* FROM Areas, TREE WHERE TREE.PId = Areas.Id ) select @area=isnull(@area,'')+Area from Tree order by id select Area= @area
则结果为:中国北京市丰台区
根据以上可以将这段代码封装为一个存储过程
-----存储过程,递归获取树形地区表字符串 if exists (select * from sysobjects where name='SP_GetAreaStr') drop proc SP_GetAreaStr go create procedure SP_GetAreaStr @id int as declare @area varchar(8000) begin WITH TREE AS( SELECT * FROM Areas WHERE id = @id -- 要查询的子 id UNION ALL SELECT Areas.* FROM Areas, TREE WHERE TREE.PId = Areas.Id ) select @area=isnull(@area,'')+Area from Tree order by id select Area= @area end go --exec sp_helptext 'SP_GetAreaStr' --go exec SP_GetAreaStr 28 go
查询结果:中国安徽省宿州市灵璧县
所用表结构:
部分数据:
以上所述是小编给大家介绍的SQL Server 树形表非循环递归查询的实例详解的相关知识,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
您可能感兴趣
- python中怎么连接mysql(python远程连接MySQL数据库)
- mysql的常见优化(详解GaussDB for MySQL性能优化)
- mysql意外查不到数据(MySQL 丢失数据的原因及解决)
- mysql删除的delete怎么找回(MySQL Delete 删数据后磁盘空间未释放的原因)
- mysql更新数据库表中的数据语法(Mysql联表update数据的示例详解)
- mysql创建数据库教程(MySQL创建数据库并支持中文字符的操作方法)
- sql如何把重复数据记录删除(sql分组后二次汇总处理表重复记录查询和删除的实现方法)
- 设置mysql字符集语句(MySQL修改字符集的实战教程)
- sqlserver字符串判断函数(解决sql server保存对象字符串转换成uniqueidentifier失败的问题)
- sql server 报错(sql server利用不同语种语言显示报错错误消息的方法示例)
- mysql插入数据错误代码(教你解决往mysql数据库中存入汉字报错的方法)
- mysql常用的sql语句大全(mysql建表常用的sql语句汇总)
- mysqldump 命令详解(mysqldump你可能不知道的参数)
- sql导入数据库脚本(使用用SQL语句从电脑导入图片到数据库的方法)
- mysql出现的问题及解决方法(mysql升级到5.7时,wordpress导数据报错1067的问题)
- mysql事务未提交会锁表吗(Mysql事务中Update是否会锁表?)
- 怎么快速学好英语(怎么快速学好英语初中)
- 中国留学生都是富二代吗()
- 我们现在吃的苹果是哪里来的 原来现代苹果引入中国仅有一百多年(我们现在吃的苹果是哪里来的)
- 买绿宝不能只挑黄绿色 菜农教你3招挑,个个皮薄肉脆,香甜爆汁(买绿宝不能只挑黄绿色)
- 大果肉搭配薄瓜皮, 绿宝 脆甜爽口,不愧是甜瓜中的 佼佼者(大果肉搭配薄瓜皮)
- 河南尉氏县因地制宜发展果蔬种植 水坡镇绿宝甜瓜变 金瓜(河南尉氏县因地制宜发展果蔬种植)
热门推荐
- css居中代码(CSS之居中布局的实现方法)
- 新手nginx反向代理问题(详解Nginx proxy_pass的一个/斜杠引发的血案)
- css3伸缩布局及图解(利用CSS3实现自定义滚动条代码分享)
- php中命名空间常用吗(PHP命名空间定义与用法实例分析)
- C#中Nullable<T>
- nginx反向代理及原理(传说中的反向代理,Nginx+Apache软件配置Web服务器)
- 协程在python中怎么使用(python协程之动态添加任务的方法)
- css3导航菜单(CSS3实现的侧滑菜单)
- dedecms搜索功能怎么设置详细(织梦Dedecms软件频道下载次数真实显示的权宜修改)
- laravel5.1获取数据(laravel5表单唯一验证的实例代码)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9