MySQL left join 连接查询

提问

先提个问题:A left join B,查询出来的记录数会比 A 表的多吗?

答案是会,不知道大家是不是跟我一样,之前听到的版本是:A left join B,返回左表(A)的所有行,如果B表中没有匹配项,则结果集中B表的部分将包含NULL值。然后一直以为总记录数就是左表的记录数,不会左边的表多。
所以感觉之前见到的这个图有点误导人,因为结果的记录数可能比左表还多:
在这里插入图片描述
接下来我们来验证一下:

测试

准备sql

很简单,2 张表:

create table t1(
                   name varchar(255),
                   age int
);

create table t2(
    name varchar(255),
    role varchar(255)
);

insert into t1(name, age)value ('张三', 18);
insert into t2(name, role)value ('张三', '管理员'),('张三', '员工');

测试 left join

select * from t1 left join t2 on t1.name = t2.name;

结果:t1表只有 1 条记录,结果确有 2 条;

t1 left join t2,在匹配t1和t2的过程中,如果 t2表有多条记录匹配,则结果中会有多条记录。我们根据t1表的 name去匹配,在t2表可以找到 2 条记录,因此结果有 2 条
在这里插入图片描述

大家好,我是猫哥, 5 年+Java开发经验,之前学习都是只求多,也不管掌握了多少,现在要开始尝试写博客,用最简单的语言,把每个知识点讲清楚。检验是否掌握的标准是能用最简洁的话让一个外行人听明白。这也是著名的 费曼学习法
在这里插入图片描述

觉得有帮助的同学们,点点关注呀,你的支持是我更新的动力,给大佬们鞠一躬!
在这里插入图片描述

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值