CTE表达式递归

news/2024/8/25 15:14:05
/*通用表表达式 CTE的递归*/
--1.CTE有一个优点就是可以允许自身引用,这样可以方便创建递归的CTE
--递归CTE的结构包括:定位点成员和递归成员,递归的过程就是Ti作为输入,Ti+1作为输出。
--创建测试数据
create table test(
id varchar(30),
parentID varchar(30),
name varchar(30)
)
insert into test values('001','','1');
insert into test values('001001','001','11');
insert into test values('001002','001','12');
insert into test values('001001001','001001','111');
insert into test values('001001002','001002','112');
insert into test values('001001001001','001001001','1111');
--查询11的下级
with c11 as
(
select * from test where id='001001'--定位点成员,作为Ti输入,查询它的下级就是 c11.id=test.ParentID
union all--必须以union all 来连接递归成员
select b.* from c11 a join test b on a.id=b.ParentID--必须是b.*,a.*报错了,无限循环了
)
select * from c11 order by id;
--结果:
001001	001	11
001001001	001001	111
001001001001	001001001	1111
--查询1111的上级

with c1111 as
(
select * from test where id='001001001001'--定位点成员,座位图T0输入,查询它的上级就是 c1111.ParentID=test.ID
union all
select b.* from c1111 a join test b on a.parentid=b.id
)
select * from c1111 order by id;
--结果集:
001		1
001001	001	11
001001001	001001	111
001001001001	001001001	1111

  

转载于:https://www.cnblogs.com/niuge/archive/2012/08/21/2649516.html


http://www.niftyadmin.cn/n/3842932.html

相关文章

Selenium(Java)-显式等待和隐式等待

https://blog.csdn.net/yanhongyu315/article/details/80701005 在自动化测试中,有时你需要等待一个任务结束后才能进行下一个任务,所以两个任务之间就需要间隔一段等待时间,而Selenium提供了两种方法,在我们编写自动化测试代码时…

Windows图标:有一些你未必知道的东西

有一天,我的程序在任务栏的应用程序中看起来是这样的很奇怪,我的图标明明不是这样的,在资源管理器的文件夹里面,我的图标能够正常显示,在桌面的任务栏里,也能正常的显示,唯独在任务管理器里显示…

工具篇-Java中的设计模式积累(二)

------------------------------------------行为型设计模式 1. 模版模式 为什么有模版模式: 定义一个算法的骨架,而将一些步骤的实现延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中某些步骤的具体实现&#xf…

64位2003与ASP.NET 1.1

去客户现场布署系统。 服务器是64位的2003,可系统是.net 1.1的, 新建网站后,网站的ASP.NET版本里面没有1.1的选项。 安装并注册.net 1.1后,网站属性里没有ASP.NET的选项了。 服务器上以前的一个2.0的网站和这个新系统都可以运行。…

fatal: remote origin already exists.

解决方法: 先删除, 再添加 1. git remote rm origin 2. git remote add origin https://github.com/zjulanjian/eshop.git 3. git push -u origin master转载于:https://www.cnblogs.com/zjulanjian/p/11118915.html

C语言实验作业9

实验目的&#xff1a;1、掌握二维数组的使用方法。 2、掌握用二维数组表示杨辉三角的方法。 实验题目&#xff1a;输出杨辉三角。 实验代码&#xff1a; /*杨辉三角*/#include<stdio.h>int main(){ int i,j,n; int a[100][100]; printf("输入n行:"); /*输入杨辉…

python 进程池2 - Pool相关函数

python自2.6开始提供了多进程模块multiprocessing&#xff0c;进程池使用multiprocessing.pool&#xff0c;pool的构造如下&#xff1a; multiprocessing.Pool([processes[, initializer[, initargs[, maxtasksperchild]]]]) processes表示pool中进程的数目&#xff0c;默认地…

python 爬虫之requests爬取页面图片的url,并将图片下载到本地

大家好我叫hardy 需求&#xff1a;爬取某个页面&#xff0c;并把该页面的图片下载到本地 思考&#xff1a; img标签一个有多少种类型的src值&#xff1f;四种&#xff1a;1、以http开头的网络链接。2、以“//”开头网络地址。3、以“/”开头绝对路径。4、以“./”开头相对路径。…