当前位置: 首页 > 面试题库 >

为什么这么称呼内部联接和外部联接?

万俟飞语
2023-03-14
问题内容

我了解内部和外部联接的工作方式。但是,在此上下文中,“内部/外部”一词的含义是什么?内部联接到底是什么?外部联接的外部是什么?

最好的问候,维沙尔


问题答案:

另一个角度:

最早的简单实现之一是使用嵌套循环的联接。

  1. 对于内部联接,只要联接列匹配,外部循环将遍历任何关系,内部循环将遍历其他关系并创建复合行。因此,将在内部循环中创建并填充输出行。因此,这称为INNER JOIN。

  2. 当我们希望保留左侧关系\表中的所有行时,外部循环将不得不在左侧表上进行迭代,不仅行会在匹配情况下的内部循环中添加行,而且还会在不匹配的情况下在外部循环中添加行情况(根据连接列,左表在右表中没有匹配的行)。在这种情况下,左表需要转到外循环,因此它被称为LEFT OUTER JOIN。

  3. 当我们希望保留右侧关系\表中的所有行时,右侧表将需要进入外部循环,因此它被称为RIGHT OUTER JOIN。

  4. 当我们希望保留两个表的不匹配行时,以最简单的方法,我们将有两个嵌套循环。一个嵌套循环在外部循环中具有左表,而另一个嵌套循环在外部循环中具有右表。因此,两个表都进入外循环,因此被称为FULL OUTER JOIN。

将链接添加到有关嵌套循环实现的文章中:http
:
//www.cs.berkeley.edu/~brewer/cs262/3-selinger79.pdf



 类似资料:
  • 问题内容: 我们有下面的查询。使用LEFT OUTER联接需要9秒钟才能执行。将LEFT OUTER更改为LEFT INNER可以将执行时间减少到2秒,并且返回 相同 数量的行。由于正在处理dbo.Accepts表中相同数量的行,而不论联接类型如何,为什么外层要花3倍的时间? 问题答案: 返回相同行数的事实是事后事实,查询优化器无法预先知道Accepts中的每一行在Marker中都有匹配的行,可以

  • 我正在尝试JPA2.1(eclipselink)中的“treat as”函数,但遇到了一个来自JPA的错误: 异常说明:ReportQuery结果大小不匹配。应为[263],但已检索到[197] 下面是我的JPQL查询(我更改了一些部分,以便更明确): 我们可以看到account和ad_account之间的左外部连接。此外,ad_account表不存在于select子句中。(idApp字段是主键的

  • 问题内容: 我有一个网站,用户可以在其中查看电影列表,并为其创建评论。 用户应该能够看到所有电影的列表。此外,如果他们查看了电影,则他们应该能够看到他们给它的评分。如果不是,则仅显示没有得分的电影。 他们根本不在乎其他用户提供的分数。 考虑以下 我本质上想要的是 考虑以下内容: 两个测试都应打印完全相同的输出,但是,只有原始版本会吐出正确的结果表: orm会返回这个 任何试图加入其余主题的尝试,那

  • 问题内容: 我想知道什么时候应该包括外部脚本或将它们与html代码内联,以提高性能和简化维护。 一般做法是什么? 真实场景-我有几个需要客户端表单验证的html页面。为此,我使用了所有这些页面中都包含的jQuery插件。但是问题是,我是否: 编写代码位以内联方式配置此脚本? 在所有这些html页面之间共享的一个文件中包含所有位? 将每个位都包含在一个单独的外部文件中,每个html页面一个? 谢谢。

  • 问题内容: 因此,我们大多数人都知道 如何 从内部类访问外部类。用这些词进行搜索会给出关于该主题的大量回答问题。但是我想知道的是为什么语法是这样。 例: 为什么呢?看起来是A类的静态字段,但是… 感到困惑 如果这是重复的话,请原谅我。就像我说的那样,用这些词进行搜索会给出操作答案。 问题答案: 为什么这样做呢?真的,只是因为它的方式。它行之有效,从某种意义上讲,并且不需要花哨的语法来完成这项工作。

  • 如何在Hibernate中编写此SQL查询?我想使用Hibernate创建查询,而不是创建数据库。 我在SQLServer2008中创建了实体类, 我尝试用多种方法构建工作选择查询,但仍然不起作用。 也许实体有问题?