MySQL left join联合查询(on)
天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
郎骑竹马来,绕床弄青梅。
同居长干里,两小无嫌猜。
——《长干行》
文章目录
- left join
- 1. 简介
- 2. 建表
- 3. 填数据
- 4. 对比查询结果
- 4.1 原始表记录
- 4.2 关联条件唯一的联合查询
- 4.3 关联条件不唯一(左表一对多右表)
- 4.4 关联条件不唯一(左表多对多右表)
left join
1. 简介
left join 是以左表为主进行查询,在其后使用on或者where进行条件筛选
查询结果可能有几种情况,一对一、一对多、多对多等
2. 建表
用户表
create table tb_user_info(
id int auto_increment ,
name varchar(20),
gender varchar(10),
birthday varchar(255),
primary key(id)
);
生日信息表
create table tb_birthday(
id int auto_increment,
addr varchar(20),
birthday varchar(255),
primary key(id)
);
3. 填数据
用户表数据
insert into tb_user_info (name, gender, birthday) values ("李白", "男", "701-02-28"), ("翠花", "女", "701-02-28"), ("李华", "男", "991-04-29"), ("张叶", "男", "991-04-29"), ("吴思瑞", "女", "1001-12-18");
生日信息表数据
insert into tb_birthday (addr, birthday) values ("长安", "701-02-28"), ("洛阳", "991-04-29");
4. 对比查询结果
4.1 原始表记录
用户数据
select * from tb_user_info;
生日信息
select * from tb_birthday;
4.2 关联条件唯一的联合查询
用户表为左表,生日表为右表,关联条件为id
select * from tb_user_info u left join tb_birthday b on u.id = b.id;
以左表为主,关联键为id,关联键为唯一,u表记录有5条,b表记录有2条,故b表有三条关联不上
b表字段有三条空字段
4.3 关联条件不唯一(左表一对多右表)
生日表为左表,用户表为右表,关联条件为生日birthday
select * from tb_birthday b left join tb_user_info u on b.birthday = u.birthday;
以左表为主,关联键为birthday,关联键不唯一,会产生一对多或多对一的情况
左表生日一条数据可以满足右表用户表多个用户,故左表会重复,并完整将右表满足左表条件的数据列举出来
4.4 关联条件不唯一(左表多对多右表)
用户表为左表,生日表为右表,关联条件为生日birthday
select * from tb_user_info u left join tb_birthday b on u.birthday = b.birthday;
以左表为主,关联键为birthday,关联键不唯一,会产生一对多或多对多的情况
左表用户一条数据可以满足右表生日表中的多个数据,右表生日一条数据也可以满足多个用户表数据,故左表会重复,右表也会重复
感谢阅读,祝君暴富!
版权声明:
- 作者:寒山李白
- 博客地址:https://hanshan.blog.csdn.net/
- 版权:本作品采用《创作共享许可证》进行许可,根据该许可授权的内容可在符合本许可证条款的前提下自由使用、、修改和创作衍生作品。
版权许可介绍:
本文采用CC BY-NC-SA许可证
此许可允许在使用者仅出于非商业目的以任何媒体或格式分发、重新混合、改编和构建材料,并且前提是注明创作者。如果您重新混合、改编或基于该材料进行构建,则必须按照相同的条款对修改后的材料进行许可。
更多信息请访问以下网址查看:
版权官网 https://creativecommons.org/licenses/by-nc-sa/4.0/
中文翻译 https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans