MySql的Join使用

数据

<style> <!-- table, tr, td {border:dotted 1px #ccc} --> </style>
class表:
IDclass_name
1 class 1
2 class 2
3 class 3
4 class 4
5 class 5

students表:
IDstudent_nameageclass_id
1tom181
2jack191
3Lucy182
4Ely193
5Jon204
6Messi193
7Cl203
8UK226

Join与Inner Join

Join是Inner Join的简写,只有当俩表中都存在的时候才会select
select s.id,s.student_name,s.age,c.class_name,c.id from students s 
join class c on s.class_id=c.id order by s.id;
idstudent_nameageclass_nameid
1tom18class 11
2jack19class 11
3Lucy18class 22
4Ely19class 33
5Jon20class 44
6Messi19class 33
7Cl20class 33
由于没有student属于class 5和没有class 6,因此UK和class 5并不会被select

Left Join

select s.id,s.student_name,s.age,c.class_name,c.id from students s 
left join class c on s.class_id=c.id order by s.id;
idstudent_nameageclass_nameid
1tom18class 11
2jack19class 11
3Lucy18class 22
4Ely19class 33
5Jon20class 44
6Messi19class 33
7Cl20class 33
8UK22NULLNULL
以students表为基准,当class表没有匹配的就为NULL
select c.id,c.class_name,s.id,s.student_name,s.age from class c 
left join students s on c.id=s.class_id order by c.id;
idclass_nameidstudent_nameage
1class 12jack19
1class 11tom18
2class 23Lucy18
3class 34Ely19
3class 36Messi19
3class 37Cl20
4class 45Jon20
5class 5NULLNULLNULL

Right Join

select s.id,s.student_name,s.age,c.class_name,c.id from students s 
right join class c on s.class_id=c.id order by c.id;
idstudent_nameageclass_nameid
2jack19class 11
1tom18class 11
3Lucy18class 22
4Ely19class 33
6Messi19class 33
7Cl20class 33
5Jon20class 44
NULLNULLNULLclass 55
select c.id,c.class_name,s.id,s.student_name,s.age from class c 
right join students s on c.id=s.class_id order by s.id;
 
 
 
 
 
 
 
 
 
 
 
 
 
idclass_nameidstudent_nameage
1class 11tom18
1class 12jack19
2class 23Lucy18
3class 34Ely19
4class 45Jon20
3class 36Messi19
3class 37Cl20
NULLNULL8UK22

Full Join

Mysql中并不支持Full Join,但我们可以通过以下方法实现Full Join的功能
select s.id,s.student_name,s.age,c.class_name,c.id from students s 
left join class c on s.class_id=c.id
union
select s.id,s.student_name,s.age,c.class_name,c.id from students s 
right join class c on s.class_id=c.id;
idstudent_nameageclass_nameid
1tom18class 11
2jack19class 11
3Lucy18class 22
4Ely19class 33
5Jon20class 44
6Messi19class 33
7Cl20class 33
8UK22NULLNULL
NULLNULLNULLclass 55


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值