You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无重复表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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 05:34:06