The maximum recursion 100 has been exhausted before statement completion

CTE不是语法糖:T-SQL结构化思维与生产级避坑指南 公用表表达式(CTE)是SQL Server中用于逻辑分层、递归计算和可维护性提升的核心结构化工具,其本质是命名的临时结果集而非物理存储,不缓存数据但显著改善查询可读性与调试效率。相比视图和临时表,CTE在递归处理、多引用复用、作用域隔离方面具备不可替代性,尤其适用于用户行为路径分析、BOM物料爆炸、组织架构遍历等典型场景。掌握CTE的执行计划特征、命名规范、MAXRECURSION控制及与窗口函数/表值函数协同技巧,能有效规避生产环境中的死循环、性能骤降与字段污染等高频问题。 阅读详情


在执行带有with 递归的SQL脚本时,出现异常: The statement terminated. The maximum recursion 100 has been exhausted before statement completion  

异常解释:递归超出了最大递归次数,即100,也就是说递归调用的层数超过了100。

正常逻辑:既然递归层数100不够,那么我们可以修改最大值,在递归语句后面 添加: option (maxrecursion N)即可。N在 0 到 32767  之间的非负整数,当指定0时,不会套用任何限制。如果未指定这个选项,伺服器的预设限制是100。

实际情况:递归套用100层,这是很恐怖的情况,也是几乎不存在的情况,那出现这个问题的是什么呢?只有死循环了。

例如:A是B的父节点,B是C的父节点,C是A的父节点,数据表如下:

IdNameParentId
1A3
2B1
3C2

现在执行一下脚本,来查询 A的所有子节点


WITH ret AS(
    	SELECT  Id
    	FROM	Data
    	WHERE	Id = 1
    	UNION ALL
    	SELECT	t.Id
    	FROM	Data t INNER JOIN
    			ret r ON t.ParentId = r.Id
     )
select distinct Id from ret;

执行脚本时,递归次数超出了100的默认值,便会报错,即便是添加上option (maxrecursion ),也会陷入死循环。

解决方案:避免出现死循环,将现有表里的死循环就纠正过来

SQL时间序列统计:用递归CTE与数字表补齐GROUP BY缺失时段 在数据统计与报表开发中,时间序列的完整性直接影响分析结果。直接对业务表执行GROUP BY,常因某时段无记录而缺失时间点,导致图表断线。要解决这个问题,核心是先构造连续的“时间刻度表”,再通过左连接聚合补零。递归CTE、数字表、日历表是三种生成连续时间序列的主流方法,SQL Server与MySQL下的按天、按小时、按分钟统计SQL模板与性能差异值得重点掌握;递归上限、半开区间、索引失效等典型坑点也需注意,可支撑构建无断点的监控看板与数据报表。 阅读详情

相关推荐

SQL Server 2008 R2 实战指南:安装激活、连接排错与亿级数据迁移

SQL Server 是微软关系型数据库管理系统(RDBMS)的核心产品,其版本演进深刻影响企业级数据架构稳定性。SQL Server 2008 R2 作为长期服役的兼容性基石,虽已终止支持,但在工业控制、金融账务等强耦合遗留系统中仍广泛运行。理解其服务账户模型、TCP/IP协议启用机制、混合认证配置及Native Client驱动匹配原理,是保障连接可用性的技术前提;掌握bcp命令行导出、分块策略与格式文件控制,则是应对单表亿级数据迁移的工程刚需。本文聚焦真实产线场景,覆盖静默安装权限修复、navicat

weixin_33858336的博客 362

SQL线性递归解决多段航班路径优化问题

在图数据建模中,最短路径问题本质是有限深度的有向图遍历;其核心原理在于通过状态迭代扩展路径而非笛卡尔积穷举,从而兼顾完备性与可计算性。线性递归(Linear Recursion)作为ANSI SQL标准能力,依托递归CTE实现层级可控的路径生成,在保证事务一致性的同时规避了外部脚本的数据移动开销。该技术具备强工程落地价值,广泛适用于航班中转比价、物流多级配送、审批流成本分析等组合优化场景。本文以三段航程约束为切入点,详解如何用纯SQL实现防环、限深、聚合一体化的路径搜索方案。

weixin_30385925的博客 392

RV1126上YOLOv8部署实战:从模型转换到板端推理的完整避坑指南

本文提供了在瑞芯微RV1126芯片上部署YOLOv8目标识别算法的完整实战指南。内容涵盖从模型转换、环境搭建到板端推理代码编写的全流程,重点解析了RKNN-Toolkit使用、量化配置、内存优化及后处理实现等关键环节的常见问题与解决方案,旨在帮助开发者高效避坑,实现边缘AI应用的稳定落地。

pz89012345的博客 568

避免死循环――第一部分

避免死循环――第一部分 Alexander Kuznetsov原文:http://sqlblog.com/blogs/alexander_kuznetsov/archive/2009/04/20/avoiding-infinite-loops-part-one.aspx 尽管有很多关于使用游标(cursor)还是循环来获取最好性能的讨论,不过有一点是毫无

GRANDTREE的专栏 1585

Unity集成阿里云语音AI:从麦克风录音到实时语音合成的全流程实现

本文详细介绍了在Unity中集成阿里云语音AI服务,实现从麦克风录音到实时语音合成的完整流程。通过调用阿里云的语音转文字和文字转语音接口,开发者可以快速为游戏或应用添加语音交互功能,提升用户体验。文章涵盖了环境配置、签名认证、音频处理及项目集成等核心步骤,并提供了实用的调试技巧。

weixin_29224589的博客 323

NCCL 源码深度解析:从初始化到通信链路构建全流程

本文深入解析了NVIDIA Collective Communication Library (NCCL) 的核心工作机制,从通信组初始化、硬件拓扑发现,到P2P、共享内存及网络传输链路的构建。详细剖析了源码中集合通信任务的执行流程与Proxy线程的协同机制,为开发者进行高性能分布式训练的性能调优与深度问题排查提供了清晰的底层视角。

hp777的博客 551

SQL Server中的递归CTE和外键引用

介绍 (Introduction) Foreign key constraints are a powerful mechanism for preserving referential integrity in a database. They can also represent a challenge when doing bulk table loads, since you ...

culuo4781的博客 734

Jetson 平台编译安装 FFmpeg 7.1(支持 Nvmpi + SRT + x265)

摘要: 本文详细介绍了在NVIDIA Jetson平台上编译FFmpeg 7.1并集成关键功能的全过程。通过补丁方式加入Nvmpi实现硬件加速支持,同时编译集成x265编码器和SRT低延迟传输协议。步骤涵盖:1)安装x265编码器;2)配置SRT协议支持;3)编译jetson-ffmpeg的Nvmpi接口;4)定制化编译FFmpeg 7.1;5)验证模块集成情况。最终实现支持硬件编解码、高效HEVC压缩和可靠推流的增强版FFmpeg,为Jetson平台的音视频处理提供完整解决方案。

J。 345

SQLServer 默认递归上限问题

摘要:本文针对SQL Server递归CTE生成时间序列时遇到MAXRECURSION限制问题,提出三种解决方案:1) 修改MAXRECURSION参数(0表示无限制);2) 使用预生成的Numbers表替代递归(生产环境推荐);3) 临时生成Tally表(适合一次性查询)。重点推荐Numbers表方案,并给出详细实现代码及时间对齐、区间边界等注意事项,强调该方法无递归限制、性能优异,最适合大跨度时间序列生成场景。

xieshen86的专栏 595

3. Matérn协方差模型与随机偏微分方程

对应的高斯马尔可夫随机场 (GMRF)可以通过使用某种随机偏微分方程(SPDE)明确构造,当由高斯白噪声驱动时,随机偏微分方程的解是具有 Matérn 协方差函数的高斯场(GF)

weixin_40614311的博客 1745

SAP_PP模块定额工艺路线简介

在 SAP PP(生产计划)模块中,定额工艺路线(Routing) 是生产制造流程中的核心主数据之一,用于定义制造一个产品所需的标准操作步骤。工艺路线详细描述了生产过程中的各个工序、使用的工作中心、标准作业时间、资源分配等信息,是进行生产计划、成本核算、排产控制、车间执行等功能的基础。

我小时候很黑的博客 765

突破SQL2005CTE递归最大100层的限制

 ;WITH t AS (  SELECT 1 AS num  UNION ALL  SELECT num+1 FROM t  WHERE num)SELECT * FROM tOPTION(MAXRECURSION 0) --当指定MAXRECURSION为0时,递归层次无限制,100为系统的默认值/*num-----------1234567891011121314151617181920

一个世界一个家,我爱中国! 3946

基于ESP32的AI 古琴:基于音频指纹的民族乐器智能校准系统设计与实现

硬件选型兼顾实用性与低成本,接线简单易实现;基于 MFCC 的音频指纹算法,能有效识别古琴弦的音高特征;人机交互友好,新手可快速上手。

weixin_42300449的博客 307

关于SQL中CTE(公用表表达式)(Common Table Expression)的总结

一.WITH AS的含义     WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分。 特别对于UNION ALL比较有用。因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高,所以可以使用WITH AS短语,则只要执行一遍即可。如果WITH AS短语所定义的表名被调

飞鸟之家 2236

11、牛转录组分析的实用生物信息学流程

本文详细介绍了一套实用的牛转录组分析生物信息学流程,涵盖从数据提取、基因组索引生成、读取比对到单样本表达分析及差异表达分析的完整步骤。使用Angus和Brahman牛的RNA-seq数据作为示例,介绍了HTSEQ、featureCounts和StringTie等工具在基因表达计数中的应用,并结合edgeR和limma进行差异表达分析。文中提供了详细的命令行与R代码示例,包含常见问题解答与关键注意事项,帮助研究人员高效、准确地完成转录组数据分析。

ios99的博客 111

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SQL Server CTE 递归查询全解

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

weixin_33924220的博客 219

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SQL Server 2005 Beta 2 Transact-SQL 增强功能 1

SQL SERVER 2005排序函数SQL Server 2005 引入了四个新的排序函数:ROW_NUMBER、RANK、DENSE_RANK 和 NTILE。这些新函数使您可以有效地分析数据以及向查询的结果行提供排序值。您可能发现这些新函数有用的典型方案包括:将连续整数分配给结果行,以便进行表示、分页、计分和绘制直方图。Speaker Statistics 方案下面的 Speak

因帅被判7年 1016

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

SQL数据补零全攻略:从日期序列到报表连续显示

在数据分析与报表开发中,时间序列数据缺失是高频难题。当数据库没有某天的记录,直接GROUP BY会导致图表断点,让业务误判为异常波动。SQL补零技术通过构造完整时间序列并与业务表关联,将缺失日期的指标填充为零,确保报表连续展示。其核心原理是利用递归CTE或数字辅助表生成日期序列,再通过LEFT JOIN与COALESCE补值,同时结合窗口函数实现环比、累计等计算。该技术在电商销售日报、金融资金流动性监控、运营周报等场景中应用广泛,能显著提升数据质量与可视化效果。掌握跨数据库的补零方案、性能优化与常见陷阱,是

weixin_34127717的博客 294

[SQL Server] TSQL实现SQL Server中CTE 递归查询

简介 递归查询主要应用于层级结构表的查询: 叶节点-> 根节点的查询 根节点-> 叶节点的查询 递归查询必须满足的条件 初始条件 递归查询至少包含两个子查询:两个子查询使用union all,求并集 第一个子查询称作定点(Anchor)子查询:定点查询只是一个返回有效表的查询,用于设置递归的初始值; 第二个子查询称作递归子查询:触发递归查询,实际上是递归子查询调用递归子查询 终止条件 递归查询没有显式的递归终止条件, 只有当递归子查询返回空结果集(没有数据行返回)或是超出了递归次数的最

AutismThyself的博客 1351

SQL Server 中生成等差数列的方法研究

SQL Server 中生成等差数列的方法研究

qq_38531502的博客 747

SQL Server 递归异常:语句被终止。完成执行语句前已用完最大递归 100。

SQL Server 递归异常

songjuntao8的专栏 4632

SQL Server高级语法实战指南:复杂查询、性能优化与避坑法则

先监控后优化:使用执行计划与DMV定位瓶颈渐进式改进:每次只修改一个变量并测试效果防御性编程:对所有动态SQL进行参数化处理。

xiaoyu❅的博客 1318
上一篇: jq 滚动到底事件
下一篇: SQL 循环截取法分割字符串,默认返回数据表
JavaLiCong
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值