create table code_catalog_structure(catalogid nvarchar(10),col varchar(10),parentid nvarchar(10))
insert into code_catalog_structure select '我是一层的一','aaa','*ROOT*'
insert into code_catalog_structure select '我是一层的二','bbb','*ROOT*'
insert into code_catalog_structure select '我是二层的一','ccc','我是一层的一'
insert into code_catalog_structure select '我是二层的二','ddd','我是一层的二'
insert into code_catalog_structure select '我是三层的一','eee','我是二层的一'
insert into code_catalog_structure select '我是三层的二','fff','我是二层的二'
insert into code_catalog_structure select '我是三层的三','ggg','我是二层的二'
go
;with father as
(
select *,lev=0,seq=CAST(catalogid AS VARBINARY) from code_catalog_structure where parentid = '*ROOT*'
union all
select a.*,lev=lev+1,seq=CAST(seq+CAST(a.catalogid AS VARBINARY) AS VARBINARY) from code_catalog_structure a join father b on a.parentid = b.catalogid
)
select parentid,catalogid,lev,seq from father order by seq
/*
parentid catalogid lev
---------- ---------- -----------
*ROOT* 我是一层的一 0
我是一层的一 我是二层的一 1
我是二层的一 我是三层的一 2
*ROOT* 我是一层的二 0
我是一层的二 我是二层的二 1
我是二层的二 我是三层的二 2
我是二层的二 我是三层的三 2
(7 行受影响)
*/
go
drop table code_catalog_structure
分享到:
相关推荐
在SQL中,递归查询是一种强大的工具,常用于处理层级数据,例如组织结构、树形菜单等。在给定的场景中,我们需要根据一个特定的节点ID查询出该节点及其所有子节点,并将这些结果存储在一个临时表中。以下是实现这一...
7. `递归下降语法分析.sdf`:可能是SQL Server Compact Edition数据库文件,可能用于存储解析过程中的一些数据。 8. `递归下降语法分析.sln`:Visual Studio解决方案文件,包含一个或多个项目。 9. `example1.txt` ...
- **递归查询的语法扩充**:文章详细介绍了如何在SQL的现有语法基础上增加递归查询的语法结构,并提出了相应的解析和执行算法。 - **逻辑谓词的理论与算法**:对于逻辑谓词的扩充,文章探讨了相关的理论基础,给出...
在支持`WITH RECURSIVE`的数据库(如PostgreSQL、SQL Server)中,递归查询的通用语法如下: ```sql WITH RECURSIVE cte_name AS ( -- 初始化子查询(非递归部分) SELECT column1, column2, ... FROM table_...
而SQL Server 2005引入的CTE(Common Table Expression,公用表表达式)提供了一种更简洁有效的方式,利用递归查询特性来处理层级数据。 CTE提供了一种可以引用自己的查询结果集的方法,它是一个临时命名的结果集,...
### SQL Server 2005 中使用 CTE 实现递归 #### 一、CTE 递归原理 在 SQL Server 2005 中,使用公共表表达式(Common Table Expression, CTE)实现递归是一种高效且直观的方式。递归 CTE 通常由两部分构成:定位...
#### 二、SQL递归查询语法介绍 递归查询主要通过`WITH`子句实现,具体格式如下: ```sql WITH recursive_query_name (column_list) AS ( -- 递归基 SELECT ... FROM table_name WHERE base_condition UNION ...
### SQL语句递归:Oracle中的递归查询详解 在数据库查询语言中,递归查询是一种非常强大的功能,尤其在处理具有层次结构的数据时尤为重要。本文将深入探讨Oracle数据库中的递归查询,包括其基本语法、工作原理以及...
总的来说,Oracle和SQL Server的递归查询功能虽然在语法上有所不同,但都能有效地处理层级数据和递归逻辑。理解并掌握这两种数据库的递归查询方法,对数据库管理和数据分析工作将大有裨益。在实际应用中,应根据具体...
- **SQL Server:** SQL Server同样支持使用子查询进行更新操作,但在某些情况下可能需要重新编写子查询以适应SQL Server的语法。 ```sql UPDATE table_name SET column1 = (SELECT some_expr FROM some_table), ...
这里我们将重点介绍HQL的使用,因为它的语法更接近SQL,对于开发者来说较为直观。 1. **建立实体类** 首先,我们需要定义一个实体类,假设为`Node`,它包含`id`、`name`和`parentId`等字段,表示节点的标识、名称...
2. **利用变量和循环**:这种方法通过在SQL查询中使用变量和循环结构来实现递归查询,适用于层级结构较为复杂的场景。 ##### 方法一:使用自连接和递归联合 自连接和递归联合是一种常见的递归查询方式,其核心思想...
MySQL 中进行递归查询有两种常见的方式:一种是使用存储过程,另一种则是利用 SQL 函数来实现递归。 #### 二、通过存储过程实现递归查询 ##### 方法一:存储过程实现递归查询 **存储过程定义:** ```sql CREATE ...
《SQL Server 2005 技术内幕:T-SQL查询源码》是一本深入探讨SQL Server 2005中T-SQL查询技术的专业书籍。T-SQL(Transact-SQL)是Microsoft SQL Server数据库管理系统中使用的SQL扩展版本,它在标准SQL的基础上增加...
从MySQL 8.0开始,引入了`WITH RECURSIVE`子句,这是一种标准的SQL语法,专门用于执行递归查询。它允许在单个查询中定义一个临时的、可递归的表,这极大地简化了处理层次结构数据的过程。 ```sql WITH RECURSIVE ...
- Oracle 的 `START WITH U CONNECT BY` 用于创建层次查询,SQL Server 可以通过递归公共表表达式(CTE)或存储过程实现类似功能。 - Oracle 支持 `INTERSECT` 和 `MINUS` 集合运算符,而 SQL Server 用 `EXISTS` 和...
在Oracle数据库中,递归查询主要依赖于`START WITH`和`CONNECT BY PRIOR`两个关键语法。本文将详细介绍这些概念以及具体的使用方法。 #### 二、创建示例表 为了更好地理解Oracle中的递归查询,我们首先需要创建...
2. 设计语法分析器:基于上下文无关文法(Context-Free Grammar,CFG)定义SQL语句的结构,并实现解析算法,如递归下降解析或LR/LALR解析。 3. 构建语法树:在解析过程中,根据解析规则生成对应的语法树节点。 4. ...