【发布时间】:2020-09-06 11:35:32
【问题描述】:
我有一个表A和B,都是一列两行如下,
A B
-------
C1 C2
1 1
1 1
1 0
0 0
如果我对此应用内连接并且它返回 8 行作为结果,
Select C1,C2 from A inner join B on A.C1=B.C2;
Result
---------
C1 C2
1 1
1 1
1 1
1 1
1 1
1 1
0 0
0 0
我猜,C1 列的第一行正在检查所有 C2 列的数据。如果匹配,则返回结果,否则不会。其余列采用相同的方法。纠正我,如果我的理解有误,请协助回答以下问题;
我有两个表 A,B 都有两列。如果我们应用内连接会是什么结果,请用功能解释我。
A B
----–-----------
C1 C2 C3 C4
1 1 1 1
1 1 1 0
在A.C1=B.C3上从A内连接B中选择C1,C2,C3,C4;
它返回 4 行,请解释一下如何?
【问题讨论】:
-
您已将
rows替换为columns,但基本上您是正确的。对于表 a 中的每一行,连接表 b 中符合连接条件的行。 -
内部联接将根据您指定的任何 谓词 匹配两个表中的行。在您的第一个示例中,您使用了谓词
A.C1 = B.C2。现在,你想在第二种情况下使用什么谓词? -
不行:在您的第二个示例中,
B没有名为C2的列。 -
在 A.C1=B.C3 上从 A 内连接 B 中选择 C1,C2,C3,C4;
-
请参阅 Martin Smith 的精彩回答:stackoverflow.com/a/27458534/2527905