使用left Join和inner join。关联后的状态查询条件放在哪里的问题

今天有人提到,用外连接查询,状态的条件要写到对应的关联表后。而不应该写到最后结果的where后面,如代码(主要是b.status = 1 放在哪里的问题)

//大佬说规范的写法
SELECT * FROM student a
	left JOIN kecheng b on a.KeId = b.KeId  and b.status = 1

//大佬说不规范的写法	
SELECT * FROM student a
	left JOIN kecheng b on a.KeId = b.KeId  
	WHERE b.STATUS = 1

我创建了两张表

 

使用第一条语句结果为

第二条结果为

其实就是外连接的时候后面跟需要的条件。外连接不要放弃每一条数据。及时为空的都要显示出来。

但是我们现如今都是用外连接查出所有数据,再最后加上where条件筛选出我们想要的数据。

其实第二条结果和使用inner join的效果一样

	SELECT * FROM student a
	INNER JOIN kecheng b on a.KeId = b.KeId  
	WHERE b.STATUS = 1

但是在实际应用中,如果关联3张表以上,内连接有时候会直接筛掉我们可能想要的数据。

应该说从代码的规范上说,外连接的筛选条件的确应该更在关联表的后面

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值