![]() |
1
0
我会拿我的脖子冒险: 这是一个Oracle优化器错误,导致优化器在将查询转换为更高效的内容(合并视图等)的过程中错误地解释了查询的意图。 我们可以说这是一个bug,因为no_query_transform提示将结果更改为预期的结果。除了执行计划之外,我不熟悉任何可能改变任何事情的暗示,当然也不会改变结果。 这些类型的“错误结果”错误最常见于具有内联性能视图的复杂查询。 |
![]() |
2
0
这种行为听起来完全是意料之中的:这是LEFT JOIN所做的,通过将其更改为INNER JOIN来修复它就证明了这一点。 基本上,LEFT JOIN表示(在本例中)从a中返回与WHERE子句匹配的所有行,从b中返回您可以与所选a匹配的所有b,但是如果没有与任何所选a相匹配的b,则无论如何都返回a,其中b中的值为空。 将其更改为INNER JOIN不会返回没有b的a。同样的效果可以通过在where子句中排除空b列来获得,正如您也注意到的那样。 这就是LEFT联接的行为方式。 |
![]() |
Community wiki · SQL语法新手 1 年前 |
![]() |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |