为了方便理解,简单的做几个表:
1、学生表(student)
| ID | name | age | classid | |
|---|---|---|---|---|
| – | 1 | 三哥 | 17 | C1 |
| – | 2 | 四哥 | 16 | C2 |
| – | 3 | 二妹 | 18 | C3 |
| – | 4 | 表妹 | 16 | C2 |
| – | 5 | 媳妇 | 18 | C5 |
2、班级表(class)
| CID | cname | school | schoolNO | |
|---|---|---|---|---|
| – | C1 | I 体一班 | IT体育搞校 | S50001 |
| – | C2 | 空脑一班 | 颜值搞校 | S50002 |
| – | C3 | 塑形一班 | 颜值搞校 | S50002 |
使用left join 的结果集(注意上面没有C5的班级也就是说咱媳妇在一个不存在的班级哈):
select stu.*,cla.* from student stu left join class cla on stu.classid = cla.CID
| ID | name | age | classid | CID | cname | school | schoolNO |
|---|---|---|---|---|---|---|---|
| 1 | 三哥 | 17 | C1 | C1 | I 体一班 | IT体育搞校 | S50001 |
| 2 | 四哥 | 16 | C2 | C2 | 空脑一班 | 颜值搞校 | S50002 |
| 3 | 二妹 | 18 | C3 | C3 | 塑形一班 | 颜值搞校 | S50002 |
| 4 | 表妹 | 16 | C2 | C2 | 空脑一班 | 颜值搞校 | S50002 |
| 5 | 媳妇 | 18 | C5 | – | – | – | – |
以上表可以看出join的表没有数据与student可以关联,则结果集没有关联部分的join表字段值是空的。
使用inner join 的结果集:
select stu.*,cla.* from student stu inner join class cla on stu.classid = cla.CID
| ID | name | age | classid | CID | cname | school | schoolNO |
|---|---|---|---|---|---|---|---|
| 1 | 三哥 | 17 | C1 | C1 | I 体一班 | IT体育搞校 | S50001 |
| 2 | 四哥 | 16 | C2 | C2 | 空脑一班 | 颜值搞校 | S50002 |
| 3 | 二妹 | 18 | C3 | C3 | 塑形一班 | 颜值搞校 | S50002 |
| 4 | 表妹 | 16 | C2 | C2 | 空脑一班 | 颜值搞校 | S50002 |
以上表可以看出结果集只显示与student有关联的数据,所以你的媳妇不见了。( ´・・)ノ(._.`)
关于 right join 其实与left差不多的理解了left,right自然就知道了。用left则显示基础表与关联部分数据,而right则显示right表的全部数据包含有关联的数据,前面的表没有与right关联的数据则被过滤。
·所有的愤怒,基本上都源自于没钱;所有的励志,基本上目标都是挣钱;所有的幸福,基本上状态都是有钱。为了人民币,你凭什么不拼命!



