left join on 后and 和 where 的区别

背景

平常SQL功底较浅,公司也推崇我们能java处理的数据,尽可能用java处理。所以比较容易忽略一些基础的东西。

遇到的问题

left join 的时候数据在结果集,where 筛选之后 左边的数据也被筛掉。自己考虑可能是放在where后对整个查询结果集进行筛选的原因。

查资料

看了一些网上的资料,发现如果是把条件放在on后,mysql会建立一个临时表,在生成临时表的时候使用的条件,不管on的条件是否起到作用,都会返回左表 (table_name1) 的行。

但是如果放在where后的话,就是对整个临时表进行筛选了。

所以要根据自己的业务需求来看。

总结

如果是on后的条件筛选,则左边的表行都会在结果集
如果是where后的条件筛选,会对整个结果集进行筛选

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值