Mysql连表查询JoinON详细笔记 作者:哇塞大嘴好帥

Mysql连表查询JoinON详细笔记 作者:哇塞大嘴好帥

作者:哇塞大嘴好帥(哇塞大嘴好帅)

数据库

user表

idstudentidname
1186310哇塞大嘴好帥

成绩表

idstudentidJavaLang
1186310666

方法一 连接查询

​ 如果使用连接查询必须保证两个表之间有相同的字段,使用INNER JOIN 获取他们的并集 共有的字段。并且确保两个字段内容一致

/*
	使用查询方法 连接查询
*/ 
SELECT
    u.id,
    u.studentid,
    u.name,
    s.JavaLang 
FROM
	`user` AS u
	INNER JOIN score AS s 
ON
	s.studentid = u.studentid

查询出的数据

idstudentidnameJavaLang
1186310哇塞大嘴好帥666

方法二 又查询

/*
	使用查询方法 又查询
*/
SELECT
    u.id,
    u.studentid,
    u.name,
    s.JavaLang 
FROM
	`user` AS u
	right JOIN score AS s 
ON
	s.studentid = u.studentid
idstudentidnameJavaLang
1186310哇塞大嘴好帥666

方法三 左查询

/*
	使用查询方法 左查询
*/
SELECT
	u.id,
	u.studentid,
	u.name,
	s.JavaLang
FROM
	user as u 
	left join score as s
on 
	s.studentid = u.studentid
idstudentidnameJavaLang
1186310哇塞大嘴好帥666

我们这时候做一个测试,我们在user表添加一行数据

idstudentidname
1186310哇塞大嘴好帅
2186311大嘴小学生

这时候我们在使用三种查询方式查看结果

连接查询

idstudentidnameJavaLang
1186310哇塞大嘴好帥666

又查询

idstudentidnameJavaLang
1186310哇塞大嘴好帥666

左查询

idstudentidnameJavaLang
1186310哇塞大嘴好帥666
2186311大嘴小学生NULL

通过以上的三种查询方式我们可得一个结论

代码描述
INNER JOIN必须左右表匹配,才可以返回
LEFT JOIN即使右表没有匹配也会返回左表所有值
RIGHT JOIN即使左表没有匹配也会返回右表所有值

通过连表左表查询JavaLang字段为null的数据

select
	u.id
	u.studentid
	u.name
	s.JavaLang
FROM
	user as u
	left JOIN score s
on u.studentid = s.studentid
where JavaLang is null
idstudentidnameJavaLang
1186310大嘴小学生NULL

​ 因为我们左表查询会把左表所有的数据显示出出来,我们的项目需求只是要查询javaLangNull的用户,所有我们再加一个判断where JavaLang is null就可以查询出来为null的用户

where与on的区别

语法描述
on连接查询
where等值查询

复杂的sql连表查询

为了添加复杂性这时候我们在添加一个表

userclass表

idstudentidclass
11863102
select 
	u.id,
	u.studentid,
	u.`name`,
	s.JavaLang,
	sc.class
from 
	user as  u
left join score as s
on u.studentid = s.studentid

inner join userclass sc
on u.studentid = sc.studentid
idstudentidnameJavaLangclass
1186310哇塞大嘴好帥6662

首先先左表查询出来数据,接后又连表查询的数据,展示出我们想要的字段(u.id,u.studentid,s.JavaLang,u.name,sc.class)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哇塞大嘴好帅(DaZuiZui)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值