Sql 如果这两个表是内部连接的,那么输出是什么?

Sql 如果这两个表是内部连接的,那么输出是什么?,sql,inner-join,Sql,Inner Join,如果两个表是内部连接的,那么输出是什么 我的回答是1233,但面试官说错了:/ 据我所知,内连接是指两个表的公因数。对于这个问题,我应该采取什么方法?答案是: Table A: 1 1 1 2 2 3 3 3 4 4 Table B: 1 1 2 2 3 3 5 5 5 让我解释一下: 表A中有三行包含1,表B中有两行包含1,因此最终输出将有3*2=6个1。其他值也是如此。这完全取决于查询的内容。如果您这样做: 1 1 1 1 1 1 2 2 2 2 3 3 3 3 3 3 selec

如果两个表是内部连接的,那么输出是什么

我的回答是1233,但面试官说错了:/


据我所知,内连接是指两个表的公因数。对于这个问题,我应该采取什么方法?

答案是:

Table A: 1 1 1 2 2 3 3 3 4 4  
Table B: 1 1 2 2 3 3 5 5 5

让我解释一下:
表A中有三行包含1,表B中有两行包含1,因此最终输出将有3*2=6个1。其他值也是如此。

这完全取决于查询的内容。如果您这样做:

1
1
1
1
1
1
2
2
2
2
3
3
3
3
3
3
select *
from a join
     b
     on 1=0;
select *
from t1 join
     t2
     on 1=1;
select *
from a join
     b
     on a.col = 4 and b.col = 2;
你不会有任何争吵

如果您这样做:

1
1
1
1
1
1
2
2
2
2
3
3
3
3
3
3
select *
from a join
     b
     on 1=0;
select *
from t1 join
     t2
     on 1=1;
select *
from a join
     b
     on a.col = 4 and b.col = 2;
您将生成笛卡尔积

如果您这样做:

1
1
1
1
1
1
2
2
2
2
3
3
3
3
3
3
select *
from a join
     b
     on 1=0;
select *
from t1 join
     t2
     on 1=1;
select *
from a join
     b
     on a.col = 4 and b.col = 2;
您将得到重复四次的4行
42

如果您这样做:

1
1
1
1
1
1
2
2
2
2
3
3
3
3
3
3
select *
from a join
     b
     on 1=0;
select *
from t1 join
     t2
     on 1=1;
select *
from a join
     b
     on a.col = 4 and b.col = 2;
您将得到四行,每行带有
2
3

等等


您的问题没有足够的信息。

内部联接条件是什么?大概(但不一定)是平等连接?然后得到笛卡尔积效果:6行加1,4行加2,6行加3(无4或5)。A中的每一行都与B中对应的每一行相匹配。您的定义是正确的,但我不明白这些行是如何被称为表的。哪些是属性?内部连接发生在哪里?在这种情况下,我会像你一样回答,“内部联接意味着两个表的公因数”-你应该重新阅读什么是内部联接“如果两个表是内部联接的”没有意义-内部联接带有一个其结果依赖的条件。“两个表的共同因素”是无法理解的。使用足够的单词、句子和引用部分例子,清楚、完整地说出你的意思。给出您的DBMS和版本。PS请通过编辑澄清,而不是评论。PS引用权威来源的内部连接定义,应用它,并解释您在哪里被卡住。请不要让我们再写一封。此外,这是一个很容易找到的常见问题,不应该问重复的问题。这个问题不清楚,因此值得评论,要求澄清,而不是猜测答案,猜测会导致混乱。另外,请将帖子需要理解的所有内容都放在帖子本身中,而不是放在你链接到的其他地方。@philipxy,在oracle db中,我们只需要给出这样的演示,这样的评论是无法理解的。请使用足够的单词、句子和参考资料来清楚、完整地表达你的意思。你读过问题了吗?但是无论如何,我很感激你的帮助。内部联接需要一个条件,通过ON、USING或NATURAL,但问题没有给出任何条件或列名。(结果有一列,因此要成为联接,而不是联接的投影,它必须是后2列中的一列。)您正在猜测一个不清楚的问题的答案,因此应该对其进行注释并关闭。2.你的文章应该是独立的,有代码,而不是链接。我的评论没有任何与这个问题不一致的地方。