sql server CTE递归使用测试

--CTE递归查询
if(object_id(N‘menu‘) > 0)
	drop table menu

CREATE TABLE MENU
 (
    name nvarchar(50) NOT NULL PRIMARY KEY,
    senior nvarchar(50) NULL
);

 INSERT INTO MENU values
    (‘文件‘,NULL),
    (‘新建‘,‘文件‘),
    (‘项目‘,‘新建‘),
    (‘项目11111‘,‘项目‘),
    (‘项目22222‘,‘项目‘),
    (‘项目33333‘,‘项目‘),
    (‘使用当前连接查询‘,‘新建‘);

WITH lmenu(name,senior,level) as
 (
    SELECT NAME,SENIOR,0 level FROM MENU WHERE name = ‘新建‘
    UNION ALL
    SELECT A.NAME,A.SENIOR,b.level+1 FROM MENU A,lmenu b
    where a.senior = b.name
)
SELECT *  from lmenu

  

时间: 2024-10-18 02:31:31

sql server CTE递归使用测试的相关文章

Sql Server CTE递归

WITH cte AS ( SELECT a.FNUMBER,a.FMATERIALID AS MainId,b.FMATERIALID AS ChileID,CAST(b.FMATERIALID AS VARCHAR(max)) AS lev FROM t_eng_bom a JOIN dbo.T_ENG_BOMCHILD b ON a.fid =b.FID WHERE a.fid = '100150' UNION ALL SELECT d.FNUMBER,d.MainId,d.ChileID

[转]SQL SERVER整理索引碎片测试

SQL SERVER整理索引碎片测试 SQL SERVER整理索引的方法也就这么几种,而且老是自作聪明的加入智能判断很不爽,还是比DBMS_ADVISOR差远了: 1SQL SERVER 2000/2005 查询 2000use DB_Namedeclare @table_id intset @table_id=object_id('Table_Name')dbcc showcontig(@table_id) 2005SELECT index_id,index_type_desc,avg_fra

SQL Server CTE 递归查询全解

在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例,递归查询主要用于层次结构的查询,从叶级(Leaf Level)向顶层(Root Level)查询,或从顶层向叶级查询,或递归的路径(Path). 一,递归查询原理 CTE的递归查询必须满足三个条件:初始条件,递归调用表达式,终止条件,CTE 递归查询的伪代码如下: WITH cte_name (

在SQL Server 实现递归

--在SQL Server 中其实提供了CTE[公共表表达式]来实现递归: Declare @Id Int Set @Id = 24;    ---在此修改父节点 With RootNodeCTE(Id,ParentId) As ( Select Id,ParentId From Dept Where ParentId In (@Id) Union All Select Dept.Id,Dept.ParentId From RootNodeCTE Inner Join Dept On RootN

SQL Server使用递归查询数据

功能描述:有两张表,一张业务部门表A(A表中存某公司的所有业务部门信息),另一张表为用户表B(B表中存某公司所有用户所在的业务部门信息),要求使用SQL语句查询出各个部门的用户数量(注意:统计各业务部门的用户数量时,需要将其下所有子部门的用户统计进去): 表A: 表B:     方法描述: 使用SQL Server的递归方式: 1.先联合两张表查询数据,并将查询出的结果存放在临时表中: 2.使用cte方法从临时表中查询数据: 具体的SQL脚本如下: select B.用户名, B.业务部门, A

如何找回SQL Server实例安装时的序列号

当需要再次安装SQL Server时,如果序列号找不到了,可以试着从已经安装的实例里找回序列号,因为安装完SQL Server后,序列号(Product Key)被保存在注册表里: MSDN订阅下载的安装包是内置序列号的,则没有这个困扰. 一. 序列号保存在哪 通过无文档记载的扩展存储过程xp_regread读取注册表: --For SQL Server 2008, 2008 R2 use master GO exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTW

(转)SQL Server 性能调优(cpu)

摘自:http://www.cnblogs.com/Amaranthus/archive/2012/03/07/2383551.html 研究cpu压力工具 perfom SQL跟踪 性能视图 cpu相关的wait event Signal wait time SOS_SCHEDULER_YIELD等待 CXPACKET等待 CMEMTHREAD等待 调度队列 cpu密集型查询 高CPU使用率的创建几种状况 miss index 统计数据丢失 非SARG谓词 隐式类型转化 参数探测器 ad ho

访问内网中的sql server数据库的简便方法

前言: 有时候我们要访问局域网内的 sql server服务器,比如测试环境数据库在公司内网,回到家或在客户现场要连接内网中的数据库 第一步:假如可以连接局域网的数据库 192.168.150.129 ,在远程还要能连接它 第二步:在内网穿山甲中添加一个TCP端口,本机IP填局域网的IP,端口 1433,映射到外网端口 随便填 然后就可以用 yxnat.softdev.top,7777 访问内网中的sql server数据库了 数据库连接配置文件中也可以这填上端口号就可以连接 YXNAT.Sof

浅析SQL Server在可序列化隔离级别下,防止幻读的范围锁的锁定问题

原文:浅析SQL Server在可序列化隔离级别下,防止幻读的范围锁的锁定问题 本文出处:http://www.cnblogs.com/wy123/p/7501261.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) 数据库在处理并发事物的过程中,在不同的隔离级别下有不同的锁表现,在非可序列化隔离级别下,存在着脏读,不可重复读,丢失更新,幻读等情况.本文不讨论脏读和不可重复读以及丢失更新的情形,仅讨论幻读,幻