mysql join 包括左链接、右连接、全链接。直接使用例子表述一下差别,假设有如下score表,以及student学生表
学号 | 姓名 |
1 | 小花 |
3 | 小二 |
学号 | 分数 |
---|---|
1 | 10 |
4 | 20 |
可以观察以上表,student 表中学号为3的人,在score表中没有记录。同时score表中,学号为4学生的在student中表没有记录。
全链接
select * from score join student on student.学号 = student.学号将会得出以下结果
学号 | 分数 | 姓名 |
1 | 10 | 小花 |
可以看出结果中student学号为3的数据以及score表中学号为4的数据都没得了。所以全链接需要on后面的条件都有相同的值的时候记录才会被查询出来
左链接
select * from score left join student on student.学号 = student.学号将会得出以下结果
学号 | 分数 | 姓名 |
1 | 10 | 小花 |
3 | null | 小二 |
可以看出结果中学号为4的数据都没得了,但是确有student中学号为3的记录,并且分数为空,因为分数表中没有学号为3的分数。左链接可以看作已join左边那张表为基准。如果右边的表没有出现该记录,那么值填为空。
右链接
select * from score right join student on student.学号 = student.学号将会得出以下结果
学号 | 分数 | 姓名 |
1 | 10 | 小花 |
4 | 20 | null |
可以看出结果中学号为3的数据都没得了,但是确有score中学号为4的记录,并且姓名为空,因为学生表中没有学号为4的记录。右链接可以看作已join右边那张表为基准。如果左边的表没有出现某个记录,那么值填为空。