mysql左连接—left join
2022/2/1 19:11:04
本文主要是介绍mysql左连接—left join,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
原文链接:这里
0.前言
join 是 SQL查询中很常见的一种操作,具体来讲有join,left join, right join,full join等很多形式。这片文章主要说下left join
1.定义与图解
左联结,会将左侧表中的数据全部取出来。不管右侧是否存在能关联上的数据。
首要条件,A表和B表必须有重合的部分。
我们先执行下面SQL语句生成数据。
DROP TABLE IF EXISTS `students`; CREATE TABLE `students` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `stu_name` varchar(20) NOT NULL , `stu_sex` varchar(10) NOT NULL , `class_id` int(10) NOT NULL , `age` int(10) NOT NULL DEFAULT 18, `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP, `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8; insert into students (stu_name,stu_sex,class_id,age) values ('张三','男',1001,18), ('王晓红','女',2001,20), ('李清乐','男',1001,23), ('赵倚天','男',3001,23), ('赵四','男',1001,22), ('王燕','女',3001,21), ('李西西','女',2001,20), ('高严','男',3001,22), ('冯清贺','男',4001,23), ('杨丽丽','女',5001,21), ('王和和','男',4001,22); DROP TABLE IF EXISTS `teacher`; CREATE TABLE `teacher` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `teacher_name` varchar(20) NOT NULL , `teacher_sex` varchar(10) NOT NULL , `class_id` int(10) NOT NULL , `age` int(10) NOT NULL DEFAULT 18, `tel` varchar(11) , `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP, `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8; insert into teacher (teacher_name,teacher_sex,class_id,age,tel) values ('王老师','男',1001,38,'13011112222'), ('李老师','男',2001,28,'13012344222'), ('赵老师','男',3001,38,'13011112233'), ('孙老师','男',4001,28,'14011112222'), ('周老师','男',5001,18,' ');执行完毕后,我们有两个表了。
然后我们执行left join语句
select * from students as s left join teacher as t on s.class_id = t.class_id我们用左右两个表的class_id作为关联。结果是:
我们可以看出,以左表为依据,查找左表中class_id与右表中的class_id重合的记录。
通过最后一条记录可以看到,即时表中有空记录也同样显示。
如果我们反着来,将两个表的位置调换
select * from teacher as t left join students as s on s.class_id = t.class_id结果如下:
2.扩展
我们如果只想要左侧部分怎么办,参照最上面的写法就可以。
select * from students as s left join teacher as t on s.class_id = t.class_id where t.class_id is null这篇关于mysql左连接—left join的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程