SQL四种连接类型结果行数计算的正确性验证请求
你的答案存在错误,正确的各连接操作最小及最大可能行数如下:
Inner Join(内连接)
- 最小行数:0,当表1和表2的
user_id完全没有交集时,没有匹配行,结果为0行 - 最大行数:5000,当表1所有行的
user_id与表2所有行的user_id完全相同时(比如表1全是user_id=1,表2也全是user_id=1),每一行表1的行都会和表2的每一行匹配,得到50×100=5000行
- 最小行数:0,当表1和表2的
Left Join(左连接)
- 最小行数:50,左连接会强制保留表1的所有行,即使没有匹配的表2数据,此时结果就是表1的50行
- 最大行数:5000,和内连接的最大情况一致,所有表1行都能和表2的所有行匹配,最终得到5000行
Right Join(右连接)
- 最小行数:100,右连接会强制保留表2的所有行,即使没有匹配的表1数据,此时结果就是表2的100行
- 最大行数:5000,当所有表2行都能和表1的所有行匹配时,得到5000行
Full Outer Join(全外连接)
- 最小行数:100,当表1的所有
user_id都包含在表2的user_id集合中时,全外连接的结果行数等于表2的行数(比如表1的user_id是1到50各一行,表2的user_id是1到100各一行,此时全外连接结果为100行);反之若表2的所有user_id都在表1中,结果行数也不会小于100(因为表2本身有100行) - 最大行数:5000,当所有表1行与表2行都匹配时,结果和内连接一致,为5000行
- 最小行数:100,当表1的所有
内容的提问来源于stack exchange,提问作者zayuki
相关产品推荐
相关产品推荐

