问题标签 [common-table-expression]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6307 浏览

sql - 如何获得递归 CTE 中生成的最后一条记录?

在下面的代码中,我在 SQL Server 2005 中使用递归 CTE(公用表表达式)来尝试查找基本层次结构的顶级父级。此层次结构的规则是每个 CustID 都有一个 ParentID,如果 CustID 没有父级,则 ParentID = CustID 并且它是最高级别。

所以如果 tblCustomer 看起来像这样:

我从上面的代码得到的结果是:

我想要的只是该结果的最后一行:

如何只返回 CTE 中生成的最后一条记录(最高级别的 CustID)?

另请注意,此表中有多个不相关的 CustID 层次结构,因此我不能只执行 SELECT * FROM tblCustomer WHERE ParentID = CustID。我无法按 ParentID 或 CustID 排序,因为 ID 号与其在层次结构中的位置无关。

0 投票
3 回答
22470 浏览

sql - 使用 CTE 的优点/缺点是什么?

我正在考虑提高某些 SQL 的性能,目前 CTE 在脚本中被多次使用和引用。我会改用表变量来改进吗?(不能使用临时表,因为代码在函数内)。

0 投票
6 回答
4858 浏览

rdbms - 存储/访问有向图的最佳方式

我有大约 3500 个防洪设施,我想将它们表示为一个网络来确定流动路径(本质上是一个有向图)。我目前正在使用 SqlServer 和 CTE 递归地检查所有节点及其上游组件,只要上游路径不分叉很多,它就可以工作。但是,由于增加了上游复杂性,一些查询比其他查询花费的时间呈指数增长,即使它们在物理路径上并不远(即两个或三个“下游”段)。在某些情况下,我已经让它在终止查询之前超过十分钟。我使用的是一个简单的两列表格,一列是设施本身,另一列是第一列中列出的设施的上游。

我尝试使用当前工具添加索引以帮助加快速度,但这没有任何区别。而且,对于图中可能的连接,任何节点都可以有多个上游连接,并且可以从多个“下游”节点连接。

数据中肯定有可能存在循环,但我还没有找到验证这一点的好方法(除了 CTE 查询报告最大递归计数命中;这些很容易修复)。

所以,我的问题是,我存储这些信息是否错误?除了 CTE 之外,还有更好的方法来查询上游点吗?

0 投票
9 回答
20664 浏览

sql - Linq 中的分层数据 - 选项和性能

我有一些分层数据 - 每个条目都有一个 id 和一个(可为空的)父条目 id。我想检索给定条目下树中的所有条目。这是在 SQL Server 2005 数据库中。我在 C# 3.5 中使用 LINQ to SQL 查询它。

LINQ to SQL 不直接支持公用表表达式。我的选择是使用多个 LINQ 查询在代码中组合数据,或者在显示 CTE 的数据库上创建视图。

当数据量变大时,您认为哪个选项(或其他选项)性能更好?Linq to SQL 是否支持SQL Server 2008 的HierarchyId 类型?

0 投票
2 回答
4195 浏览

sql-server-2005 - SQL Server 性能:派生表与公用表表达式 (CTE)

在派生表上使用 CTE 是否有任何性能提升?

0 投票
8 回答
246149 浏览

mysql - MySQL "WITH" 子句

我正在尝试使用 MySQL 创建带有“WITH”子句的视图

但似乎 MySQL 不支持这一点。

我认为这是非常标准的,我确信 Oracle 支持这一点。无论如何强制MySQL使用“WITH”子句?我已经尝试过使用 MyISAM 和 innoDB 引擎。这两个都不行。

0 投票
4 回答
1023 浏览

sql - 递归查询帮助

我有以下问题,我无法成功完成。您的帮助将不胜感激。我正在使用 SQL 2005,并尝试使用 CTE 执行此操作。

表有以下 2 列

预期结果如下

谢谢拉胡尔耆那教


从评论中转录的进一步解释:

我正在使用如下查询:

上述查询的结果如下

我不希望这些数字像问题所示那样重复。

0 投票
4 回答
2270 浏览

sql-server - 如何仅在 tsql 中从计数扩展行

我有一个包含数字和范围值的表。例如,一列的值为 40,另一列的值为 100,这意味着从 40 开始,范围有 100 个以 139 结尾的值,包括数字 40。我想编写一个 tsql 语句,将我的数据扩展为单个行。

我想我需要一个 cte,但不知道如何实现这一点。

注意:扩展时我期待 7m 行。

0 投票
2 回答
1455 浏览

sql-server - 如何使用 SQL Server 对范围值进行分组

我有一个像这样的值表

如您所见,第二个数字添加到第一个数字是序列中下一个数字之前的 1 个数字。最后一个数字不在范围内(不遵循直接顺序,如在下一个值中)。我需要的是一个 CTE(是的,理想情况下),它将输出这个

第一行包含范围的起始编号,然后是其中节点的总和。下一行是下一个范围,在此示例中与原始数据相同。

0 投票
2 回答
2784 浏览

sql-server - 在 SQL Server 2005 中对分层查询进行排序

我有以下问题:我有一个用于维护分层数据的表。我想使用 SQL 2005 中的 CTE。

但我想按代码排序,结果如下:

等等有什么想法吗?