问题标签 [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.
sql-server-2005 - 你如何获得许多顶级根?
我有一个父/子关系表,多对多
假设我有公司 a、b、c、d、e
我收到此查询以返回一位顶级父母
如果我通过 b,我只会得到
因为我写的查询只能管理一个顶级父母。您将如何修复它以获取整棵树,就像第一棵树一样?
这是我的 CTE
最后,按照上面的逻辑,我得到了a,如何得到a,d?
sql - SQL 2005 CTE 与 TEMP 表 用于连接其他表时的性能
我有一个复杂的查询,需要在后续查询(实际上是更新语句)中使用。我已经尝试过使用 CTE 和临时表。与临时表方法相比,使用 CTE 的性能很糟糕。它类似于 15 秒与毫秒。为了简化测试而不是在后续查询中加入 CTE/Temp 表,我只是从中选择了 *。在这种情况下,它们的表现相同。
我已经在后续查询中查看了这两种方法的执行计划,然后只需选择 *. 使用简单选择,查询计划大致相同,但使用后续选择中的连接,查询计划则不同。具体来说,用于创建和填充临时表的查询计划部分保持不变,而用于创建和填充 CTE 的查询计划部分在随后用于带有连接的查询时会发生巨大变化。
我的问题是,为什么 CTE 的创建和填充的查询计划会随着它随后的使用方式而改变,而临时表却没有。同样在什么情况下,CTE 会比临时表产生更好的性能?
*注意我也使用了一个表变量,它与临时表方法相当。
谢谢
sql - 如何在 CTE (SQL Server 2005) 之后使用 if 语句
昨晚我在写一个像这样的简单的T-SQL程序
我在编译后发现它会抛出类似“if 附近语句不正确”之类的错误
怎么了?
但是,我通过使用其他方式做到了这一点。但我想知道为什么它不起作用!
sql - 在 SQL Server 中重新排序一组数据
我有一个这样的值表:
在这张表中,我有这样的行
我想要根据 Name2 列的顺序更新(UPDATE SET)序列的最佳方法,所以重新排序时的值是:
我很确定这可以通过 CTE 的 ROW_NUMBER OVER() 样式完成,但不确定确切的语法。
sql - 为什么我使用过一次后无法访问我的 CTE?
我的存储过程如下所示:
我只能使用一次吗?
sql-server - SQL Azure 和对 CTE 语法的支持?
有谁知道 SQL Azure 是否支持 CTE 语法?具体来说;
WITH
OVER
ROW_NUMBER()
PARTITION BY
sql-server - TSQL CTE 和排序图
具有以下结构和示例数据的表:
是否可以编写一个 CTE 查询来完成以下任务:
我很难编写一个停止在递归语句中返回行的语句。
有任何想法吗?
编辑
澄清 GetActivities('a')。此函数应找到“a”的“开始”活动并继续查找“a”上的任何“转移”活动。此时,该函数可以使用“b”递归,从而使用样本数据递归“c”。查询应通过“Transfers”返回与“a”相关的所有活动。这种活动嵌套可以根据需要深入并且是未知的(因此没有联合)。我遇到的困难是还有另一个“转移”,例如“b”->“a”。您可以看到这将如何在递归查询中创建一个循环。
再澄清一点:活动表中的传输表现为堆栈。以下是数据在表中的填充方式(在 C# 中):
sql - 如何重用公用表表达式
我正在使用公用表表达式进行分页:
进行此查询后,我立即进行了几乎相同的查询以检索项目总数:
我尝试将这些组合在一起(即:定义 CTE,查询数据,然后查询 Count,但是当我这样做时,我收到一条错误消息“Invalid object name 'query'”以响应第二个查询(Count )。
有没有办法将这两个查询合并为一个,以节省到数据库的往返行程?