SQL语句-递归

WITH UserID (OrgCode, ParentCode, Level)
AS
(

SELECT OrgCode,ParentCode,0 AS Level
FROM UMS_Organization
WHERE OrgCode= ‘ORG12743‘
UNION ALL
SELECT e.OrgCode,e.ParentCode, Level + 1
FROM UMS_Organization AS e
INNER JOIN UserID AS d
ON e.ParentCode = d.OrgCode
)
SELECT OrgCode FROM UserID

http://www.cnblogs.com/xqhppt/archive/2011/02/15/1955366.html

时间: 2024-11-08 19:04:48

SQL语句-递归的相关文章

SQL语句中使用 with 递归实现表中数据树状显示

在开发过程中会遇到很多实现树状的功能,之前为了实现数据的树状显示一般都是通过程序里面的递归实现,今天试了一下通过sql语句实现具体如下: 表名:DeptInfo 字段:DeptId(部门编号),DeptName(部门名称),DeptUpId(部门上级ID),DeptPath(部门层级) 从DeptUpId和DeptPath中可看出表数据可能很乱: 为了实现表中数据树状显示,条例清晰具体代码实现如下: with dept as(select DeptId,DeptUpId from DeptInf

Sql Server 检测死锁的SQL语句

首先创建一个标量值函数DigLock,用来递归检测SqlServer中的每一个会话是否存在加锁循环,如果该函数最终返回1则表示检测到了加锁循环 (也就是说检测到了死锁),如果最终返回0则表示没有检测到加锁循环. 1 CREATE FUNCTION [dbo].[DigLock] 2 ( 3 @spid int, 4 @orginSpid int 5 ) 6 RETURNS bit 7 AS 8 BEGIN 9 declare @blockedSpid int=null; 10 11 select

基于简单sql语句的sql解析原理及在大数据中的应用

李万鸿 通常sql语法解析都是以lex.yacc进行分析为基础的,是逐个字符进行分析,性能不高,如果基于没有子查询的sql语句进行解析,则速度会提高许多,在此对其原理加以说明. 一般sql语句十分复杂,包含多层嵌套,但其中有规律可循,其特点是所有的语句基本模式是一样的,即:都是SELECT  FROM  WHERE类型的简单语句,因此,可以把嵌套的语句逐条解析为这种简单语句.由于sql语句的语法是一样的,所以可以用递归的方法对语句加以解析,从而把sql语句解析为多条简单的子SQL语句.然后通过一

识别低效率的SQL语句

1.返回行与逻辑读的比率 CREATE TABLE t as select * from dba_objects; --CREATE INDEX idx ON t (object_id); ---例1 alter session set statistics_level=all; set linesize 1000 set pagesize 2000 select * from t where object_id=6; SELECT * FROM table(dbms_xplan.display

JDBC 入门 - 操作SQL语句

操作 SQL 语句 Statement, PreparedStatement, CallableStatement 一旦建立好连接, 就可以与数据库交互. JDBC 中Statement, PreparedStatement 和 CallableStatement 提供了SQL操作的相关API. 其中 CallableStatement 继承自 PreparedStatement, 而 PreparedStatement 又继承自 Statement. 他们的区别是: Statement 提供基

SQL实现递归及存储过程中In()参数传递解决方案[转]

SQL实现递归及存储过程中In()参数传递解决方案 1.SQL递归 在SQL Server中,我们可以利用表表达式来实现递归算法,一般用于阻止机构的加载及相关性处理. -->实现: 假设OrganiseUnit(组织机构表)中主要的三个字段为OrganiseUnitID(组织机构主键ID).ParentOrganiseUnitID(组织机构父ID).OrganiseName(组织机构名称) ? 1 2 3 4 5 6 7 [sql] with organise as (select * from

SqlServer里,一条sql进行递归删除

Server 2005中提供了公用表表达式(CTE),使用CTE,可以使SQL语句的可维护性,同时,CTE要比表变量的效率高得多. 存储过程方法: 1 create proc up_delete_nclass 2 @did int  3 as 4 with my1 as(select * from News_Class where id = @did 5  union all select News_Class.* from my1, News_Class where my1.id = News

Sql语句里的递归查询

Sql语句里的递归查询 SqlServer2005和Oracle 两个版本 以前使用Oracle,觉得它的递归查询很好用,就研究了一下SqlServer,发现它也支持在Sql里递归查询举例说明:SqlServer2005版本的Sql如下:比如一个表,有id和pId字段,id是主键,pid表示它的上级节点,表结构和数据:CREATE TABLE [aaa]( [id] [int] NULL, [pid] [int] NULL, [name] [nchar](10))GOINSERT INTO aa

SQL点滴10—使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比

原文:SQL点滴10-使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比 今天偶尔看到sql中也有with关键字,好歹也写了几年的sql语句,居然第一次接触,无知啊.看了一位博主的文章,自己添加了一些内容,做了简单的总结,这个语句还是第一次见到,学习了.我从简单到复杂地写,希望高手们不要见笑.下面的sql语句设计到三个表,表的内容我用txt文件复制进去,这里不妨使用上一个随笔介绍的建立端到端的package的方法将这些表导入到数据库中,具体的就不说了. 从这里下载文件employ