为什么在左连接中使用子查询会给出与等效表完全不同的答案?

2024-01-20

我在 Access 查询中使用左联接来获取添加了仅适用于几行的列的表。当我使用子查询作为要连接的表时,它会为我提供一个最终表,其中新列的所有行都具有相同的值。当我构建一个提供与子查询完全相同的输出的表时,它会按照我想要的方式工作。如果子查询和表看起来相同,为什么它们会给出不同的结果。

我查看了有关表和派生表之间差异的其他问题(我认为我使用子查询得到的),两者之间似乎没有区别。

SELECT *
FROM Table1 
  LEFT JOIN 
    (SELECT *, "P" AS PColumn FROM TableX, TableY WHERE TableX.x = TableY.y) AS Table2 
  ON (Table1.x = Table2.x)
WHERE Table1.X > 2

PColumn 中的每个值都是“P”。当我构建一个看起来与子查询结果完全相同的表并使用它代替子查询时,只有第 5 行的 PColumn 值为“P”,其余均为空,这就是我想要的。子查询和表具有完全相同的值,但外部 SELECT 语句中的输出不同


根据评论推断,这似乎是 MS Access 在评估外连接时使用的 JET 数据库引擎的查询优化器中再次出现的错误,如 Allen Browne 在他的文章中所述here http://allenbrowne.com/BugOuterJoinExpression.html.

考虑以下MCVE https://stackoverflow.com/help/mcve演示该错误:

Table1

+----+
| ID |
+----+
|  1 |
|  2 |
+----+

Table2

+----+
| ID |
+----+
|  1 |
+----+

SQL

select * from table1 left join (select table2.id, "x" as X from table2) q on table1.id = q.id

应该返回:

+-----------+------+---+
| table1.id | q.id | X |
+-----------+------+---+
|         1 |    1 | x |
|         2 |      |   |
+-----------+------+---+

实际上返回:

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

为什么在左连接中使用子查询会给出与等效表完全不同的答案? 的相关文章

  • 可以使用表通配符创建 sql 查询吗?

    这可能是一个简单的问题 但我无法在网上找到解决方案 任何帮助将不胜感激 我正在尝试在 PHP 中创建一个 SQL 查询 并希望以某种方式将通配符应用于 TABLE 过滤器 可能是这样的 select from table 但是 到目前为止我
  • 检查两个“select”是否相等

    有没有办法检查两个 非平凡的 选择是否等效 最初我希望两个选择之间有形式上的等价 但是答案在证明 sql 查询等价性 https stackoverflow com questions 56895 proving sql query equ
  • Reporting Services 在哪里存储其日志文件

    最相关的谷歌结果似乎表明 为了访问日志 我们必须将您自己的日志表部署到数据库并制作报告服务写入它 http technet microsoft com en us library ms157403 aspx 简而言之 Reporting S
  • JDBC插入实数数组

    我试图将一个真实的数组插入到 postgresql 数组中 该表的定义是 String sqlTable CREATE TABLE IF NOT EXISTS ccmBlock sampleId INTEGER block REAL 插入内
  • 字符串在换行符处拆分

    我在 MS Access 表单上有一个文本框 用户将从 Excel 电子表格中复制一列数字到其中 我需要获取此输入并将其用作参数来构建查询 我的代码看起来像这样 Dim data as variant Dim input as String
  • 内置函数将每个单词的第一个字母大写

    如果 SQL Server 中已存在此类函数 我不想为此创建自定义函数 输入字符串 This is my string to convert预期输出 This Is My String To Convert SET ANSI NULLS O
  • SQL Server 连接其他表中不存在的位置

    Service Asset AssetService Id Name Id Name AssetId ServiceId
  • 如何识别拼写不同的相似单词

    我想从数据库中过滤掉重复的客户名称 一位客户可能有多个同名但拼写差异不大的系统条目 这是一个示例 名为 Brook 的客户可能有 3 个系统条目 有了这个变化 布鲁克 贝尔塔 布鲁克 贝尔塔 比鲁克 贝尔塔 假设我们将此名称放入一个数据库列
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 如何使用 BigQuery 有效地选择另一个表中匹配子字符串的记录?

    我有一个包含数百万个字符串的表 我想将其与包含大约两万个字符串的表进行匹配 如下所示 standardSQL SELECT record FROM record JOIN fragment ON record name LIKE CONCA
  • 如何在 Access 2010 中创建自定义 ID

    这个问题的标题可能不准确 因为我不确定如何提出这个问题 有没有办法让 AC 2010 中的 ID 字段具有常量部分 然后是用户将输入的 ID 的一部分 示例 EMP9066 我希望 ID 的 EMP 部分始终保持不变 用户不应更改它 并且
  • Spark SQL 中的 SQL LIKE

    我正在尝试使用 LIKE 条件在 Spark SQL 中实现联接 我正在执行连接的行看起来像这样 称为 修订 Table A 8NXDPVAE Table B 4 8 NXD V 在 SQL Server 上执行联接 A revision
  • 如何在 SQL Server 中连接

    我的数据库没有特定的列 因此我通过开关在查询中创建了一个列 我需要的是将此列与数据库中的另一列连接起来 select certificateDuration DurationType case when certificateDuratio
  • 使用加权行概率从 PostgreSQL 表中选择随机行

    输入示例 SELECT FROM test id percent 1 50 2 35 3 15 3 rows 你会如何编写这样的查询 平均 50 的时间我可以获得 id 1 的行 35 的时间 id 2 的行 15 的时间 id 3 的行
  • 自动将文本转换为十进制数 - Access

    我正在尝试使用 ODBC 将数据从 MS SQL Server DB 导入到 MS Access 对于大多数数据类型 导入会正确映射类型 但当 SQL Server 列数据类型为十进制数时 MS Access 会将其转换为文本数据类型 因此
  • Oracle 中仅在一列上不同

    我想在下表中使用不同的值 但仅在 PlayerID 列上使用 这就是我现在所拥有的 MATCHID PLAYERID TEAMID MATCHDATE STARTDATE 20 5 2 14 JAN 12 01 JUN 11 20 5 4
  • 如何获取日期时间字段的 UTC?

    我正在使用 MySQL 5 并且正在尝试将日期时间字段转换为 UTC TIMESTAMP 这是我所拥有的 但它不起作用 并且不确定我是否可以做到这一点 但有人可以告诉我我做错了什么吗 谢谢 我已经尝试过这个 SELECT UTC TIMES
  • Oracle SQL 分析查询 - 类似递归电子表格的运行总计

    我有以下数据 由A值 排序依据MM 月 The B列计算为GREATEST current value of A previous value of B 0 以类似电子表格的方式 我怎样才能计算B使用 SQL 查询 我尝试使用分析函数 但未
  • 在 MySQL 中将值设置为 NULL

    我想要一个值被设置为NULL如果我提交的表单中的文本框中没有输入任何内容 我怎样才能做到这一点 我试过插入 NULL 但这只是添加了这个词NULL进入现场 我不确定我应该为此提供什么代码 我只是编写一个 UPDATE 查询 不要放NULL更
  • 如何在 SQL 选择查询中将行转换为 JSON?

    以下查询将整个表返回为单个 JSON 字符串 JSON 对象列表 每行一个 SELECT FROM MyTable FOR JSON AUTO 我需要返回多行 其中每行都是表中单行的 JSON 字符串 例如 如果表字段为 A B C 输出应

随机推荐

  • 与单视图应用程序相比,带有 UICollectionView 的 Today Extension 具有不同的行为

    我尝试将集合视图添加到今日扩展 https developer apple com library content documentation General Conceptual ExtensibilityPG Today html指定每
  • 没有 System.Drawing/GDI+ 的 asp.net/c# 中的图像操作

    net 有替代图像处理库吗 我更喜欢托管和开源的东西 我问这个有两个原因 我过去遇到过使用 System Drawing 调试 GDI 错误的困难 我读到 在 ASP NET Web 应用程序中使用 System Drawing 并不是 1
  • Logback + Wildfly 8 - 不正确的模式

    我的 logback wildfly 8 配置有问题 我正在使用简单的 ConsoleAppender appender STDOUT ConsoleAppender encoder PatternLayoutEncoder pattern
  • 获取JPA实体版本的通用方法

    我有一个未知的 JPA 实体 需要知道它的版本 我找不到一种通用的方法来做到这一点 我尝试了元模型 但不知道要传递给 getVersion 方法的内容 Object entity Metamodel metamodel entityMana
  • Mongo 连接泄漏与吗啡

    我有一个Servlet with static Mongo new Mongo and Morphia morphia new Morphia 对象 每一次GET被调用时 我执行以下操作 doGet datastore morphia cr
  • MySQL Workbench 未在钥匙串中保存密码

    使用 Kubuntu 16 10 我将密码保存到 MySQL Workbench 中的密钥环中 检查 将密码存储在钥匙串中 复选框 只要它打开 不要求输入密码 它就可以工作 但是当我重新打开程序时 它会再次提示输入密码 似乎没有多少人有这个
  • 了解“第一个基线”与“基线”自动布局约束

    我创建了如下视图 并使用过添加缺失的约束t 自动添加约束 我是 iOS 世界的新手 我正在尝试配置约束的工作方式 在文档大纲上 我可以看到添加的限制 我点击标签UR尺寸检查员向我展示以下内容 按第一基线与 UL 对齐的约束与按基线与 UL
  • 使用 [NSFileManager URLForUbiquityContainerIdentifier:] 和 [NSFileManager ubiquityIdentityToken] 之间的主要区别是什么?

    我正在尝试将 iCloud 支持添加到我的应用程序中 并且一直在关注 Apple 自己的iCloud 设计指南 http developer apple com library mac documentation General Conce
  • 如何使用过滤函数修复数组布尔错误

    我正在尝试使用过滤器解决布尔错误 我使用过滤数组来解决迭代数组的布尔问题 它适用于一个简单的列表 但是当用于仅从数组中获取大于零的数字时 它再次显示错误 用于填充数组的方法是从标准正态分布中抽取样本 arr2 np array list f
  • 增加显示 HTML 文本的 JTextPane 的字体大小

    假设我有一个显示 HTML 文档的 JTextPane 我希望 按下按钮后 文档的字体大小就会增加 不幸的是 这并不像看起来那么容易 我找到了一种更改整个文档字体大小的方法 但这意味着所有文本都设置为我指定的字体大小 http javate
  • 在 Swift 中将 UnicodeScalar 数组转换为字符串

    我有一个 unicode 标量数组 类型是 UnicodeScalar like let array UnicodeScalar f UnicodeScalar o UnicodeScalar o or let array2 bar uni
  • 出现未定义的参考错误,但 nm 显示符号存在

    我正在使用 libkml 构建一个大型应用程序 我从这里使用 libkml 的 cmake 端口 https github com rashadkm libkml https github com rashadkm libkml 即使该符号
  • 将 SQL SUM 与包含内部 SELECT 的 Case 语句结合使用

    我有两张桌子 一张Orders表包含用户订单列表和OrderShippingCosts表 其中包含基于以下内容的每件商品的运输价格OrderTypeID in the Orders table 我正在运行如下查询来计算总运费 SELECT
  • 如何在 selenium webdriver 中从一个弹出窗口切换到另一个弹出窗口

    我的场景是 主窗口 gt 进行一些活动 单击 保存 按钮 gt 弹出确认窗口 并使用 确定 和 取消 按钮打开 单击确认弹出窗口上的 确定 按钮 gt 使用 确定 按钮打开另一个成功弹出窗口 弹出成功后点击确定按钮 切换到主窗口 PopUp
  • 有限状态机和 FSM 间信令

    对具有本机 因此没有 FSM 生成工具 支持状态机开发的语言的建议执行以及消息 信号的传递 这适用于电信 例如实现这种复杂程度的 FSM 我考虑过 Erlang 但希望得到一些反馈 建议 教程指针 替代方案 特别是基于 Java 的框架 也
  • 如何使用 chrono 包验证我的数据是否是 x 秒前的数据?

    我试图通过查看数据的时间戳来查看我的数据是否是 120 秒旧的 因此我的库项目中有以下小代码正在使用std chrono包裹 uint64 t now duration cast
  • 如何在JavaFX中改变图像的颜色

    我有一个像这样的PNG图像 我想将图像更改为如下所示 我怎样才能在 JavaFX 中做到这一点 由于您不关心它是矢量形状还是位图 因此我将在此处概述使用位图的解决方案 如果您确实想要矢量形状 我相信您需要使用矢量输入才能获得良好的结果 使用
  • Laravel Sync 方法仅发送第二个数据

    这段代码应该从数据库中删除所有旧数据 并在添加新数据时 使用sync 现在我有一个包含用户的项目 并且可以使用复选框将用户链接到项目 因此 在选中复选框时 此功能将触发 但例如当我这么说时user 1 and user 2正在通过此功能添加
  • NSMutableArray 到 std::vector

    是否可以将 NSMutableArray 的内容转换为 std vector 如果是这样 应该在 Objective C 或 C 代码中完成吗 您可以使用任何 Objective C 类型创建向量 例如 要将 NSString 实例存储到向
  • 为什么在左连接中使用子查询会给出与等效表完全不同的答案?

    我在 Access 查询中使用左联接来获取添加了仅适用于几行的列的表 当我使用子查询作为要连接的表时 它会为我提供一个最终表 其中新列的所有行都具有相同的值 当我构建一个提供与子查询完全相同的输出的表时 它会按照我想要的方式工作 如果子查询