【问题标题】:What will be the output of the left join? [closed]左连接的输出是什么? [关闭]
【发布时间】:2021-10-18 05:15:19
【问题描述】:

我有 2 张桌子 A 和 B。 表 A 有 3 行和 1 列,其值为 1、1、1。 表 B 有 2 行和 1 列的值为 1、1。 应用左连接后,表 A 左连接表 B 我将收到的输出是: 1、1、1。

对吗?

【问题讨论】:

  • 创建测试数据,编写实际的SQL,并测试它是否有效。
  • 说出你认为你明白的原因,理由是参考权威文档。否则我们不知道你为什么这么认为,所以我们无法解释你的想法是对还是错。 PS研究预计。是或否问题都不是好问题。 How to AskHelp center

标签: sql left-join


【解决方案1】:

不,您的假设不正确。如果您加入您提到的列,您将获得 6 行 (3 x 2),因为每一行都相互匹配。

表 t1

id_t1 colx
1 1
2 1
3 1

表 t2

id_t2 coly
10 1
20 1

查询

select *
from t1
left outer join t2 on t2.coly = t1.colx
order by t1.id_t1, t2.id_t2;

结果

id_t1 colx id_t2 coly
1 1 10 1
1 1 20 1
2 1 10 1
2 1 20 1
3 1 10 1
3 1 20 1

您似乎误解了左外连接的作用。表 t1 中的每一行在表 t2 中有两个匹配项。您可以通过左外连接获得这些,但您也可以通过内连接获得它们。两种连接类型之间的区别在于没有匹配项。让我们在表 t1 中添加另一行:

id_t1 colx
4 2

在 t2 中没有匹配值 2。内连接不会在结果中显示该行。相反,左外连接会将以下行添加到您的结果中:

id_t1 colx id_t2 coly
4 2 null null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 2016-07-08
    • 1970-01-01
    • 2017-11-20
    • 2013-06-20
    • 2018-09-19
    相关资源
    最近更新 更多