无重复表t1(M条记录)与t2(N条记录)连接后的最小(min)、最大(max)记录数求解咨询
SQL连接操作的最小与最大记录数解析
嘿,这个问题是SQL面试里的经典基础题,我来帮你梳理清楚~前提是t1包含M条无重复记录、t2包含N条无重复记录,我们分不同连接类型来拆解最小(min)和最大(max)记录数:
最大记录数(max)
所有连接操作中,记录数最多的情况就是笛卡尔积连接(CROSS JOIN)——它会把t1的每一条记录和t2的每一条记录进行组合,完全不考虑任何匹配条件:
- 计算公式:
max = M * N - 举个简单例子:如果t1有2条记录,t2有3条,CROSS JOIN会返回6条记录,每条t1的记录都对应t2的所有记录。
最小记录数(min)
最小记录数取决于你使用的连接类型,不同连接的逻辑决定了结果集的最小规模:
- INNER JOIN(内连接):内连接只保留两张表中连接键匹配的记录。如果t1和t2的连接键完全没有重叠值,结果集就为空:
- 计算公式:
min = 0 - 比如t1的连接键是[1,2],t2的连接键是[3,4],两者没有匹配项,INNER JOIN后返回0条记录。
- 计算公式:
- LEFT JOIN(左连接):左连接会保留左表(t1)的所有记录,即使右表(t2)没有匹配项,t2的字段会填充为NULL。所以最小记录数就是t1的总记录数:
- 计算公式:
min = M
- 计算公式:
- RIGHT JOIN(右连接):和左连接逻辑相反,会保留右表(t2)的所有记录,最小记录数就是t2的总记录数:
- 计算公式:
min = N
- 计算公式:
- FULL OUTER JOIN(全外连接):全外连接会保留两张表的所有记录,当两者完全没有匹配的连接键时,结果集就是t1和t2的记录总和:
- 计算公式:
min = M + N
- 计算公式:
如果面试时没有指定具体连接类型,通常可以先给出最具代表性的结论:最大记录数是M*N(笛卡尔积),最小记录数是0(内连接无匹配的情况),要是能补充不同连接类型的差异,会显得你对SQL连接的理解更全面哦~
内容的提问来源于stack exchange,提问作者Dipanjan Mallick
相关产品推荐
相关产品推荐

