CTE 的意外结果

2024-01-06

我创建了一个使用多个 CTE 的复杂流程(主要用于递归分层工作)。
在小样本数据集上,一切都按预期进行,但是当我将代码应用于大数据集时,我收到了意外(且错误)的结果。

我想我已经将范围缩小到了 CTE。递归 CTE 是在几个早期 CTE 中处理的“馈送”数据,这似乎就是问题所在。

我设置了一个样本数据集 http://sqlfiddle.com/#!3/c8a47/6如下:

  • 四行具有唯一数据
  • 每行接收一个随机行号(这被添加到 CTE 中)

然后,我获取第一个 CTE 的结果并在第二个 CTE 中执行自连接。
我期望所有行都加入,每一行都连接到自己。实际发生的情况是不相等的行连接在一起。

有人可以对此行为提供解释吗?


这个结果并没有什么意外的,除非你不理解它。

每个 CTE 均已解决each and every time它被引用。是的,这就是为什么高度事务性表上的简单 CTE 可以在一个引用中返回 4 行,并在接下来的 2 个级别中返回 5 行。

然而,在您的示例中,这是因为 ORDER BY NEWID() 为原始 CTE 的每个分辨率提供了不同的 row_number()-ing。您是否认为 CTE 存储在内存中并缓存?在 SQLFiddle 站点上的结果下方,有一个“查看执行计划”链接。表明对表进行 2 次不同的、单独的扫描.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CTE 的意外结果 的相关文章

  • REGEXP_REPLACE - 仅当包含在 () 中时才从字符串中删除逗号

    我在 oracle 论坛网站找到了一个例子 输入字符串 a b c x y z a xx yy zz x WITH t AS SELECT a b c x y z a xx yy zz x col1 FROM dual SELECT t c
  • 创建日期范围表

    我正在编写一份需要显示每天值的报告 我有查询的开始日期和结束日期 但我希望避免丢失日期 以防表不包含特定日期的值 我正在考虑创建一个基本日期范围表 其中包含开始和结束之间的所有日期 然后将其与数据表左连接以显示每一天的值 我找到了一些适用于
  • 最近邻居的 Postgis SQL

    我正在尝试计算最近的邻居 为此 我需要传递一个参数来限制与邻居的最大距离 例如 半径1000米内最近的邻居是哪些 我做了以下事情 我用数据创建了表 id name latitude longitude 之后 我执行了以下查询 SELECT
  • MySQL LIKE %string% 不够宽容。我还有什么可以用的吗?

    我有一位客户询问他们的搜索是否可以搜索公司名称 这些名称可以根据用户输入以多种格式进行搜索 例如数据库中存储的公司是 A J R Kelly Ltd 如果用户搜索 一个 J R Kelly 被发现 使用
  • 如何进行数据透视并计算列平均值

    我承认这是迄今为止我必须面对的最复杂的 SQL 语句之一 我在这件事上碰壁了 我希望有人能帮我一把 我在数据库中有这张表 Item ActiveTime sec DateTime 1 10 2013 06 03 17 34 22 gt Mo
  • Magento --“SQLSTATE[23000]:违反完整性约束..”客户更新

    迁移服务器后 每次尝试更新客户信息时都会出现错误 我正在使用一个客户激活插件 http www magentocommerce com magento connect vinai extension 489 customer activat
  • 在 Mysql 上使用 EntityManager JPA 运行脚本

    我正在尝试运行脚本 sql 文件 但由于我尝试了多种方法 因此出现多个错误 这是我的主要 sql 脚本 INSERT INTO Unity VALUES 11 paq 0 2013 04 15 11 41 37 Admin Paquete
  • 在 PostgreSql 中计算百分比

    例如我有一个这样的表 string adm A 2 A 1 B 2 A 1 C 1 A 2 通过 SQL 查询 我想要这样的结果 string perc adm A 50 B 100 C 0 我想要每个字符串中数字 2 出现的百分比 我可以
  • MySQL:如何获取每个分组的x个结果数[重复]

    这个问题在这里已经有答案了 可能的重复 mysql 在 GROUP BY 中使用 LIMIT 来获取每组 N 个结果 https stackoverflow com questions 2129693 mysql using limit w
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 没有为 1 个或多个必需参数给出值。更新SQL

    我正在编写一个程序 当用户在列表视图上选择记录时 该程序会更新密码或积分 我收到错误 没有为 1 个或多个必需参数给出值 我不知道如何纠正 我是否遗漏了一些明显的东西 Dim sql As String UPDATE Users SET P
  • 以编程方式插入行(父行和子行)

    我正在使用 Spring 和 JDBCTemplate 该场景是 CUSTOMER 表和 ORDERS 表的父子关系 我想做一个插入 例如 1 个客户和 5 个订单 但我不确定如何以编程方式在 CUSTOMER 表中插入一行 如何获取 Or
  • NVARCHAR 变量在Where 子句中不起作用

    在 SQL Server 我想是 2018 我不知道如何判断 中 我的变量不起作用WHERE的条款NVARCHAR 比较应该返回值 但它什么也没返回 如果我只是手动输入声明的文本 它会突然起作用并返回值 没有任何逻辑原因应该有任何不同 类型
  • postgresql:插入...(选择*...)

    我不确定它是否是标准 SQL INSERT INTO tblA SELECT id time FROM tblB WHERE time gt 1000 我正在寻找的是 如果 tblA 和 tblB 位于不同的数据库服务器中怎么办 Postg
  • H2 SQL 日期比较

    在 H2 数据库中 如何在 TIMESTAMP 类型的列上运行查询 SELECT FROM RECORDS WHERE TRAN DATE lt 2012 07 24 Try 2012 07 24
  • Oracle SQL 函数中可以有 commit 语句吗

    在 SQL 函数中使用 COMMIT 语句是否可能 有意义 从技术上来说 答案是肯定的 你can请执行下列操作 create or replace function committest return number as begin upd
  • IIF(...) 不是公认的内置函数

    我正在尝试在 Microsoft SQL Server 2008 R2 中使用它 SET SomeVar SomeOtherVar IIF SomeBool value when true value when false 但我收到一个错误
  • 获取mysql中逗号分隔行中不同值的计数

    一个表 Jobs 有 2 列 JobId 城市 当我们保存工作时 工作位置可能是多个城市 如下所示 JobId City 1 New York 2 New York Ohio Virginia 3 New York Virginia 我如何
  • 在同一查询中选择 Count of ip 和 Count of DISTINCT ip

    我有一个这样的表结构 TABLE NAME counter id datetime url ip 1 2013 04 12 13 27 09 url1 ip01 2 2013 04 13 10 55 43 url2 ip02 3 2013

随机推荐

  • 将引导模式滚动到底部时启用按钮

    我想强制用户阅读模式内的所有协议 这个想法很简单 如果他们不滚动到文本的最后一行 该按钮仍然禁用 但该按钮未启用 这是我的代码 JavaScript agreement scroll function if this scrollTop t
  • 暂时修复后恢复随机种子的最佳方法是什么?

    这是 取消种子 随机数生成器的唯一方法吗 np random seed int time time 如果您希望在循环中重复某些代码 例如测试 而其他代码希望每个循环都是随机的 那么在设置种子后如何将种子 重置 为随机数生成器 下面的代码说明
  • TensorFlow 和 Keras 的相同实现之间的不同行为

    我的机器上有 TensorFlow 1 9 和 Keras 2 0 8 当使用一些玩具数据训练神经网络时 TensorFlow 和 Keras 之间产生的训练曲线非常不同 我不明白为什么 对于 Keras 实现 网络学习得很好 损失持续减少
  • 类型错误 float 不可调用。我试图弄清楚为什么我的 elif 语句不可调用[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions from
  • 如何使用 GORM 创建复合主键?

    我有三个领域类 Beer Review 和 Reviewer 我希望 Review 表在 Beer 和 Reviewer 之间创建多对多关系 因此我希望 Review 的主键是 Beer 和 Reviewer 的 id 字段的组合 我正在关
  • 结合 geojson 和 json 制作传单

    我有一张带有 GeoJson 图层的 Leaflet 地图 var objJson https raw githubusercontent com salucci Leaflet Teste master BrasilNovo json g
  • 如何替换已弃用的 android.support.v4.app.ActionBarDrawerToggle

    昨天 17 10 2014 我更新了 Android SDK 并support library v4 jar我的应用程序 现在我收到与以下内容相关的弃用警告ActionBarDrawerToggle 阅读文档 https developer
  • 什么时候使用vtable?

    vtable 仅用于虚拟函数查找 还是也用于普通成员函数查找 从技术上讲 这是一个实现细节 C 标准没有提及 vtable 或 vptr 但通常情况下 编译器只会在多态意义上 即通过指向基类的指针 引用 调用成员函数时才会选择使用 vtab
  • 加快 Firebase 存储下载速度

    我正在尝试从 Firebase 存储中提取视频并将其放入我的 Android 应用程序上的幻灯片中 但视频需要很长时间才能加载 有谁有任何替代方案或方法来加快数据下载速度 您可以将文件存储在区域存储中 例如 us east1 请参阅http
  • 如何仅显示一页以上的报表的第 x 页(共 y 页)

    我正在使用 jasper reports 4 5 0 我正在使用这个碧玉生成不同格式的报告 我想在我的报告中显示第 X 页 共 Y 页 所以我使用 iReport 提供的页码文本字段 该字段在调色板中可用 它显示所有报告中的页码 甚至是单页
  • 从更新站点下载 eclipse 插件的工具

    我需要在未连接到 Internet 的计算机上安装 eclipse 插件 但找不到用于本地安装的 dist 是否有一个工具可以从更新站点下载插件并创建本地安装存档 或本地更新站点 有传言说你可以用 eclipse 来做到这一点 但我找不到任
  • 如何更改 UITextField 上清除按钮的色调颜色

    我的 UITextfield 上有一个自动生成的清除按钮 具有默认的蓝色色调 我无法将色调颜色更改为白色 我尝试修改故事板和代码但没有成功 并且我不想使用自定义图像 如何在不使用自定义图像的情况下更改默认的透明按钮色调颜色 干得好 Tint
  • HTML.fromHTML - Android 中的 TagHandler

    我有一个 TextView 我想将 HTML 设置为 HTML fromHTML 但我想过滤掉所有 img 带有标签处理程序的标签 我想将所有链接 src 保存在列表数组中 那可能吗 Thanks 是的 这是可能的 您可以使用jsoup h
  • 如何确定电子邮件地址是 Microsoft“工作或学校”帐户还是 Microsoft 帐户

    我想在 Azure 多租户环境中对 Microsoft 帐户和 工作或学校 帐户进行身份验证 每种身份验证类型需要不同的请求 如果我尝试针对 工作或学校 请求以 Microsoft 帐户身份登录 则登录将在 Microsoft 登录时失败
  • 在 api 27、28、29 中混淆应用程序时,工作管理器不会运行

    我有一个每 15 分钟运行一次的定期任务 当混淆应用程序时 如果应用程序从后台被终止 工作管理器将不起作用 测试设备 一加7T 诺基亚5 Google Pixel 2模拟器 仅当应用程序位于前台或后台时 工作管理器才会执行 禁用 progu
  • 如何在混合(C#/C++)调试中设置数据断点?

    我用 C 启动程序 然后调用一些非托管 C 当我在非托管 C 中中断一行时 新数据断点 菜单项呈灰色 有没有办法解决 所以要做到这一点我必须 将非托管dll设置为启动项目 将托管程序设置为启动命令 将调试模式设置为Native 中断执行 或
  • 使用有关 WooCommerce 用户创建的生成密码发送电子邮件通知

    在 WooCommerce 中 使用下面的代码我创建新的 WP User 其中随机密码并将用户角色设置为 客户 我想在购买时自动创建帐户 然后我用WC Emails将登录详细信息发送给买家 在这种情况下 我需要纯密码 但我真的不知道为什么附
  • 如何锁定 SVN 主干(除了来自分支的合并)?

    我想阻止开发人员直接在主干上工作 我的目标是强制所有开发人员离开主干并在自己的分支上工作 直到 CI 测试通过 然后 他们必须从主干合并到分支 以获取最新更改 运行并通过测试 然后再合并回主干 这种 SVN 使用方式有什么规则吗 限制主干提
  • “grep”命令的退出状态代码

    The grep http linux die net man 1 grep手动在退出状态部分报告 EXIT STATUS The exit status is 0 if selected lines are found and 1 if
  • CTE 的意外结果

    我创建了一个使用多个 CTE 的复杂流程 主要用于递归分层工作 在小样本数据集上 一切都按预期进行 但是当我将代码应用于大数据集时 我收到了意外 且错误 的结果 我想我已经将范围缩小到了 CTE 递归 CTE 是在几个早期 CTE 中处理的