关于两张SQL表Inner Join返回12行结果的原因咨询
为什么Inner Join返回12行结果?
这是因为Inner Join的匹配逻辑是将两张表中满足关联条件的记录进行笛卡尔积组合,不是只保留原表的行数,具体计算如下:
先明确两张表的分组数据:
- 表
ab中,值为1的有3行,值为2的有2行 - 表
bc中,值为1的有2行,值为2的有3行
Inner Join会把两张表中a.a = b.b的每一组匹配记录两两组合:
- 当匹配值为1时:
ab的3行 ×bc的2行 = 6行结果 - 当匹配值为2时:
ab的2行 ×bc的3行 = 6行结果
两者相加6+6=12行,这就是最终返回的行数。
简单来说,只要两张表中有多条相同的匹配值,每一条都会互相配对生成新行,而不是只保留原表的行数。
内容的提问来源于stack exchange,提问作者vish
相关产品推荐
相关产品推荐

