目录
(2)语法:tableA inner|left|right|full join tableB on (s)>
即 tableA inner|left|right|full join tableB on <连接字段>
1.SQL的表格join连接方式
(1)解释说明
inner join:内连接/交集连接,意思是两个表格都有的行才返回行数据。
left join:左连接,左表A和右表B连接,只要A表有就返回行数,B表没有对应位置则返回空值。
right join:左连接,左表A和右表B连接,只要B表有就返回行数,A表没有对应位置则返回空值。
full join:全连接/并集连接,左表A和右表B连接,只要A/B有则返回行数,没有的位置对应返回为空值。
(2)语法:tableA inner|left|right|full join tableB on <joint_column(s)>
即 tableA inner|left|right|full join tableB on <连接字段>
joint_column:连接字段/共同字段,一般用唯一且具有代表性两个表共有的字段作为连接字段,是指用于连接两个表的连接字段。比如一个学生信息表与成绩表连接一般用唯一且共同字段即学号ID来连接。
注意:一般情况下,为了节省运行时间以及输出表格数据内存,同时为了获取目标结果,采用left join语法即可解决大部分问题。
2.left join函数的实例
(1)用法:从另一张表中获取目标列信息进行拼接。
类似于Excel中的VLOOKUP函数映射信息
(2)实例
现有三张表,一张表是学生信息情况表student,主要字段是学号ID,姓名name,年龄age,班级class等其它学生信息;一张表是学生选课表course,主要字段有学号st_ID,课程号ID以及选课情况;一张是课程成绩表score,主要字段是课程号ID,语数英成绩分别为Chinese,math,English。
例1:获取学生选课情况的成绩。直接将学生选课表course和课程成绩表score左连接获取。
select *
from course
left join score on course.ID = score.ID
例2:获取学生所有信息,包括学生个人信息以及选课情况的成绩。将三个表左连接起来。
select *
from student
left join course on student.ID=course.st_ID
left join score on course.ID = score.ID
例3:在例2的基础上进行调整,只是获取学生部分信息以及个别门课成绩,包括学生学号、姓名、年龄、班级、math成绩。
select student.ID as ID,name,class,math
from student
left join course on student.ID=course.st_ID
left join score on course.ID = score.ID) as table
注意:从多个表获取数据时,若需要获取的字段名在多个表都存在,无法确认从哪个表获取,需要指定表名即表名.字段,否则会报错。