左连接的输出是什么?

What will be the output of the left join?

我有 2 个表 A 和 B。 Table A 有 3 行和 1 列,其值分别为 1、1、1。 Table B 有 2 行和 1 列,其值为 1、1。 应用左连接后,Table A 左连接 Table B 我将收到的输出是: 1, 1, 1.

是否正确?

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

Table t1

id_t1 colx
1 1
2 1
3 1

Table 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

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

添加另一行
id_t1 colx
4 2

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

id_t1 colx id_t2 coly
4 2 null null