SQL on and 和 on where 的区别

Posted uzai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL on and 和 on where 的区别相关的知识,希望对你有一定的参考价值。

 on and 和 on where 的 区别

在使用 left join 时, on and 和 on where 会有区别;
1. on的条件是在连接生成临时表时使用的条件,以左表为基准 ,不管on中的条件真否,都会返回左表中的记录
  on 后面 and 都是对右表进行筛选

2.where是全部连接完后,对临时表进行筛选,筛选对左表和右表都有效

在使用inner join时,on   and与on  where条件的区别:不管是对左表还是右表进行筛选,on  and和on  where都会对生成的临时表进行过滤。

1. 新建表 t1

技术图片

2. 新建表 t2

技术图片

3. 关联查询:

select * from t1 left join t2 on t1.user_id = t2.user_id

技术图片

on and 

a.) 对左表加and 条件

select * from t1 left join t2 on t1.user_id = t2.user_id and t1.deleted = 0

技术图片

 

b.) 对右表加and 条件

select * from t1 left join t2 on t1.user_id = t2.user_id and t2.deleted = 0

技术图片

 

 on where

select * from t1 left join t2 on t1.user_id = t2.user_id where t1.deleted = 0

技术图片

select * from t1 left join t2 on t1.user_id = t2.user_id where t2.deleted = 0

技术图片

 

以上是关于SQL on and 和 on where 的区别的主要内容,如果未能解决你的问题,请参考以下文章

转!!SQL左右连接中的on and和on where的区别

sql中在使用left join 时 on and 和on where 的区别

sql连接查询中on筛选与where筛选的区别

sql连接查询中on筛选与where筛选的区别

sql left join on and 与 where

浅谈!SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别