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

“泪神经联接”和“尿素联接”有什么区别?

向实
2023-03-14
问题内容

此外怎么办LEFT JOINRIGHT JOINFULL JOIN适合吗?


问题答案:

假设您要加入没有重复的列,这是一种很常见的情况:

  • A和B的内部连接给出A相交B的结果,即维恩图相交的内部。

  • A和B的外部连接给出A并集B的结果,即维恩图并集的外部。

例子

假设您有两个表,每个表都有一个列,数据如下:

A    B
-    -
1    3
2    4
3    5
4    6

请注意,(1,2)是A唯一的,(3,4)是通用的,(5,6)是B唯一的。

内部联接

使用任一等价查询的内部联接将给出两个表的交集,即它们共有的两行。

select * from a INNER JOIN b on a.a = b.b;
select a.*, b.*  from a,b where a.a = b.b;

a | b
--+--
3 | 3
4 | 4

左外连接

左外部联接将给出A中的所有行,以及B中的所有常见行。

select * from a LEFT OUTER JOIN b on a.a = b.b;
select a.*, b.*  from a,b where a.a = b.b(+);

a |  b
--+-----
1 | null
2 | null
3 |    3
4 |    4

右外连接

右外部联接将给出B中的所有行,以及A中的所有常见行。

select * from a RIGHT OUTER JOIN b on a.a = b.b;
select a.*, b.*  from a,b where a.a(+) = b.b;

a    |  b
-----+----
3    |  3
4    |  4
null |  5
null |  6

完全外部联接

完整的外部联接将为您提供A和B的并集,即A中的所有行和B中的所有行。如果A中的某物在B中没有对应的基准,则B部分为空,反之反之亦然。

select * from a FULL OUTER JOIN b on a.a = b.b;

 a   |  b
-----+-----
   1 | null
   2 | null
   3 |    3
   4 |    4
null |    6
null |    5


 类似资料:
  • 问题内容: 我了解内部和外部联接的工作方式。但是,在此上下文中,“内部/外部”一词的含义是什么?内部联接到底是什么?外部联接的外部是什么? 最好的问候,维沙尔 问题答案: 另一个角度: 最早的简单实现之一是使用嵌套循环的联接。 对于内部联接,只要联接列匹配,外部循环将遍历任何关系,内部循环将遍历其他关系并创建复合行。因此,将在内部循环中创建并填充输出行。因此,这称为INNER JOIN。 当我们希

  • 问题内容: 这个问题已经在这里有了答案 : INNER JOIN ON vs WHERE子句 (11个答案) 这两种联接表方法之间的区别? (4个答案) 6年前关闭。 例如,如果我要创建一个表“ Person”,该表的“ id”列引用表“ Worker”中的“ id”列 这两个查询之间有什么区别?它们产生相同的结果。 和 谢谢 问题答案: 完全没有区别 。 第二个表示形式使查询更具可读性,并且使得

  • 问题内容: 我知道SQL Server中的联接。 例如。有两个表Table1,Table2。 它们的表结构如下。 表1的数据如下: 表2数据如下: 如果我执行下面提到的两个SQL语句,则两个输出将是相同的 请在上述SQL语句中说明左右联接之间的区别。 问题答案: Select * from Table1 left join Table2 … 和 确实是完全可以互换的。但是,请尝试(或同一对)进行区

  • 问题内容: 我访问过许多网站,找到有关哪个更好的答案(ANSI或非ANSI语法)。这两个查询有什么区别? 和: 在两种情况下,结果都是相同的。第二个查询也更长。哪一个更好? 假设是否基于需要连接它们的条件在上面的查询中添加了另一个表Salgrade?..谁能假设一张桌子并给我解释 问题答案: 两种语法通常都可以正常工作,但是如果您尝试添加where条件,您将发现使用第二种语法更容易理解哪个是连接条

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

  • 什么是SQL和什么是不同的类型?