SQl树查询

一、SqlServer树查询

很多人可能想要查询整个树形表关联的内容都会通过循环递归来查...事实上在微软在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;

自定义函数方式:

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‘)
时间: 2024-07-30 17:43:48

SQl树查询的相关文章

使用WinDbg调试SQL Server查询

上一篇文章我给你介绍了WinDbg的入门,还有你如何能附加到SQL Server.今天的文章,我们继续往前一步,我会向你展示使用WinDbg调试SQL Server查询需要的步骤.听起来很有意思?我们开始吧! 假设在你面前有个简单的查询,你想在WinDbg里调试那个特定的查询.听起来很简单,但一旦你开始考虑这个问题,就会碰到很多问题: 在我特定执行的查询上,我如何标识出正确的工作者线程? 在sqlservr.exe里,我应该在哪里设置断点? 我们来具体讲解下这2个问题. 标识出正确的工作者线程

Oracle树查询及函数

Oracle树查询的最重要的就是select...start with... connect by...prior语法了.依托于该语法,我们可以将一个表形结构的中以树的顺序列出来.在下面列述了Oracle中树型查询的常用查询方式以及经常使用的与树查询相关的Oracle特性函数等,在这里只涉及到一张表中的树查询方式而不涉及多表中的关联等. 以我做过的一个项目中的表为例,表结构如下: Sql代码   CREATE TABLE FLFL ( ID      NUMBER                

字符串的公共前缀对Mysql B+树查询影响回溯分析

年前项目组接微信公众号. 上线之后,跟微信相关的用cid列的查询会话的SQL变慢了几十倍!思考这个问题思考了非常久.从出现以来一直是我心头的一个结.cid这一列是建了索引的,普通的cid列更新都没问题,为何仅仅有微信的有问题?同样的前缀又是怎样影响索引的? 分析过程 1.explain下微信cid的查询.微信的cid会以mid-qqwanggou001为前缀插入数据 explain select * from analysis_sessions where cid = "mid-qqwanggo

Oracle树查询总结

最近在做公司的项目中遇到一个问题,多级级联导航菜单,虽然只有三级目录,但<li>中嵌套<ul>,数据库表结构如下: 1 CREATE TABLE FLFL 2 ( 3 ID NUMBER NOT NULL, 4 MC NVARCHAR2(20), 5 FLJB NUMBER, 6 SJFLID NUMBER 7 ) 很常见的表结构,包括自身ID和父ID,对于这种我们已不陌生,在写树状菜单的时候经常见到这样的数据结构,但是我们一般写树状菜单的时候都会用到前端的框架比如zTree或者t

Oracle树查询

Oracle树查询的最重要的就是select...start with... connect by ...prior 语法了.依托于该语法,我们可以将一个表形结构的中以树的顺序列出来.在下面列述了Oracle中树型查询的常用查询方式以及经常使用的与树查询相关的Oracle特性函数等,在这里只涉及到一张表中的树查询方式而不涉及多表中的关联等. 以我做过的一个项目中的表为例,表结构如下: Sql代码 CREATE TABLE FLFL ( ID NUMBER NOT NULL, MC NVARCHA

如何设断点????-----使用WinDbg调试SQL Server查询

http://www.cnblogs.com/woodytu/p/4665427.html http://www.sqlservercentral.com/blogs/aschenbrenner/2014/05/13/debugging-a-sql-server-query-with-windbg/ 上一篇文章我给你介绍了WinDbg的入门,还有你如何能附加到SQL Server.今天的文章,我们继续往前一步,我会向你展示使用WinDbg调试SQL Server查询需要的步骤.听起来很有意思?我

Oracle树查询(查询所有子节点,父节点等等)_转载

Oracle树查询(查询所有子节点,父节点等等) 转载 2016年01月14日 10:11:55 Oracle树查询的最重要的就是select...start with... connect by ...prior 语法了.依托于该语法,我们可以将一个表形结构的中以树的顺序列出来.在下面列述了Oracle中树型查询的常用查询方式以及经常使用的与树查询相关的Oracle特性函数等,在这里只涉及到一张表中的树查询方式而不涉及多表中的关联等. 以我做过的一个项目中的表为例,表结构如下: Sql代码 1

sql树形查询

sql: 使用Common As:递归公用表 https://docs.microsoft.com/en-us/sql/t-sql/queries/with-common-table-expression-transact-sql?view=sql-server-2017 sql:http://blog.51cto.com/tianxingzhe/1720092 /****** Script for SelectTopNRows command from SSMS ******/ --查询某个节

python 3 mysql sql逻辑查询语句执行顺序

python 3 mysql sql逻辑查询语句执行顺序 一 .SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <havin