SQLServer 之 树查询
一、SqlServer树查询
1、使用公用表表达式(CTE)
很多人可能想要查询整个树形表关联的内容都会通过循环递归来查...事实上在微软在SQL2005或以上版本就能用别的语法进行查询,下面是示例。
--通过子节点查询父节点
With Tree As(
Select * From table
Where id = 6 -- 要查询的子 id
Union All
Select table.* From table, Tree
Where Tree.parent = table.id
)
Select * From Tree; --通过父节点查询子节点
With Tree As(
Select * From table
Where parent = 2 -- 要查询的父 id
Union All
Select table.* From table, Tree
Where table.parent = Tree.id
)
Select * From Tree;
2、自定义函数方式:
Create Function dbo.GetSubtreeInfo ( @parentId AS nvarchar(20) )
Returns @treeinfo table
( FunctionId nvarchar(20) NOT NULL ,
FunctionName nvarchar(50) NOT NULL,
Url nvarchar(100),
ParentId nvarchar(20) NOT NULL,
OrderId nvarchar(20),
[levels] [int] NOT NULL
)
As
Begin
Declare @level As int
Select @level = 0
Insert Into @treeinfo
Select FunctionId, FunctionName, Url, ParentId, OrderId, @level
From SystemFunction
Where ParentId = @parentId
While @@ROWCOUNT > 0
Begin Set @level = @level + 1
Insert Into @treeinfo
Select E.FunctionId, E.FunctionName, E.Url, E.ParentId, E.OrderId, @level
From SystemFunction as E JOIN @treeinfo as T
On E.ParentId = T.FunctionId and T.levels = @level - 1 End
Return
End
drop function dbo.GetSubtreeInfo
select * from dbo.GetSubtreeInfo('F0000')
SQLServer 之 树查询的更多相关文章
- sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)
sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器) 我们日常使用SQL Server数据库时,经常遇到需要在实例Instance01中跨实例访问Instanc ...
- Oracle、MySql、SQLServer数据分页查询
看过此博文后Oracle.MySql.SQLServer 数据分页查询,在根据公司的RegionRes表格做出了 SQLserver的分页查询语句: 别名.字段 FROM( SELECT row_nu ...
- SQL设置SQLServer最大连接数查询语句
设置最大连接数 下面的T-SQL 语句可以配置SQL Server 允许的并发用户连接的最大数目. exec sp_configure 'show advanced options', 1exec s ...
- Sqlserver数据库分页查询
Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询 ...
- SQLServer访问Oracle查询性能问题解决
原文:SQLServer访问Oracle查询性能问题解决 1. 问题 系统有个模块,需要查询Oracle数据库中的数据.目前是通过建立链接服务器实现的. SQLServer访问Oracle实现 可参考 ...
- Oracle树查询及相关函数
Oracle树查询的最重要的就是select...start with... connect by ...prior 语法了.依托于该语法,我们可以将一个表形结构的中以树的顺序列出来.在下面列述了Or ...
- A - 低阶入门膜法 - K-th Number (主席树查询区间第k小)
题目链接:https://cn.vjudge.net/contest/284294#problem/A 题目大意:主席树查询区间第k小. 具体思路:主席树入门. AC代码: #include<i ...
- sqlserver中怎么查询字段为空的记录
sqlserver中怎么查询字段为空的记录的两种方法: 详细介绍请查看全文:https://cnblogs.com/qianzf/ 原文博客的链接地址:https://cnblogs.com/qzf/
- 字符串的公共前缀对Mysql B+树查询影响回溯分析
年前项目组接微信公众号. 上线之后,跟微信相关的用cid列的查询会话的SQL变慢了几十倍!思考这个问题思考了非常久.从出现以来一直是我心头的一个结.cid这一列是建了索引的,普通的cid列更新 ...
随机推荐
- Vuex了解
State Vuex是用来管理某个应用的整个状态,那么一个应用只能有一个Vuex实例.和React一样,Vuex也不允许直接去修改state,而是通过提交mutation,来触发状态变更.Vuex的状 ...
- poj 1273 Drainage Ditches 网络流最大流基础
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 59176 Accepted: 2272 ...
- POJ 2356 Find a multiple 抽屉原理
从POJ 2356来体会抽屉原理的妙用= =! 题意: 给你一个n,然后给你n个数,让你输出一个数或者多个数,让这些数的和能够组成n: 先输出一个数,代表有多少个数的和,然后再输出这些数: 题解: 首 ...
- HTML的各个标签的默认样式
head{ display: none } body{ margin: 8px;line-height: 1.12 } button, textarea,input, object,select { ...
- ClassifyHandler 分类处理结构
public class ClassifyHandler { public object vTrue { get; set; } public object vFalse { get; set; ...
- 【原】Java程序调用远程Shell脚本
此程序的目的是执行远程机器上的Shell脚本. [环境参数]远程机器IP:192.168.234.123用户名:root密码:rootShell脚本的路径:/home/IFileGenTool/Bak ...
- IOS webView学习
本文简单介绍下在IOS中,webView的基本用法,也顺便强化下自己的基础知识----天明少羽爬楼梯 一.加载外部HTML 显示webView 报错:NSURLSession/NSURLConnect ...
- Tasker to answer incoming call by pressing power button
nowadays, the smartphone is getting bigger in size, eg. samsung galaxy note and note 2, sorta big in ...
- 【leetcode】sort list(python)
链表的归并排序 超时的代码 class Solution: def merge(self, head1, head2): if head1 == None: return head2 if head2 ...
- 怎样用代码方式退出IOS程序
原文 :iOS Developer Library Technical Q&A QA1561 How do I programmatically quit my iOS application ...