sql left join时条件放在在on和where的区别

sql left join时条件放在在on和where的区别

连接查询的时候可以on多个条件查询

	以前做连接查询的时候,关联查询的都是一个条件,这两天面试接触到on可以设定多个条件,如此回来之后便进行了一个实验. 
表user
	id	  name age
	1	  一号	12
	2	  二号	13
	3	  三号	14
表course
  user_id     course	  	score
	1			数学			65
	2			语文			83
	1			英语			72
	2			数学			91

对应的sql是这样的
SELECT * FROM useru LEFT JOIN course c ON c.user_id = u.id AND u.name` = ‘一号’

查询的结果是这样的
在这里插入图片描述
可以看到,在left join的时候 on 后面的条件限制对左表并未起作用,因为没有对结果进行筛选,所以左表的数据全部出来了,但对应的右表是有关联不上的数据的,所以后面两条数据,右表部分为null

另一条语句则不一样了
SELECT * FROM user u
LEFT JOIN course c ON c.user_id = u.id
WHERE u.name = ‘一号’
可以看到这里对结果进行了筛选
一开始对这些挺疑惑的,后面查询看到大神说left join on多个条件时,对左表不起作用,只对右表产生作用,而inner join 则不一样了,inner join 时 on多个条件,对左表右表都可以起作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值