MYSQL:SQL中内外连接ON AND 和ON WHERE的区别

SQL中join的用法

join关键字的作用是将多个表按一定的条件联合起来,从而可以实现从多个表中获取数据

https://www.cnblogs.com/jiuban2391/p/6609862.html

在使用inner join与where连接相同的情况

MYSQL:SQL中内外连接ON AND 和ON WHERE的区别_第1张图片
A表,B表数据
MYSQL:SQL中内外连接ON AND 和ON WHERE的区别_第2张图片
where与inner join

这两种的查询类型内容一样,不知道有什么区别?

MYSQL:SQL中内外连接ON AND 和ON WHERE的区别_第3张图片
left join与right join的区别

两者为什么不一样?在什么场合区分使用?更加深入,区别左右连接,内连接在on where 和on and的区别。


sql中join与where做表连接的区别

https://blog.csdn.net/zhaoyf7746/article/details/78044013


MYSQL 左右表连接 ON AND 和ON WHERE 的区别

https://blog.csdn.net/qqqqqq654/article/details/77991690

原先一直对SQL左右连接中的on and和on where的区别不是太了解,直到在网上看到了下面这段话才豁然开朗。

在使用left join时,on and和on where条件的区别如下:

1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉,on后的条件用来生成左右表关联的临时表,where后的条件对临时表中的记录进行过滤。

左右连接:(①,②)和(③,④)就是关键词on and和on where的区别,但结果却完全不同。综上三个例子,where是生成临时表以后再进行过滤,对左右表都进行筛选。而and后面的语句如果是对left join中的左表进行过滤将不起任何作用,对右表进行过滤的话,那么左表还是返回所有行,只是右表会被过滤掉一部分行。

内连接:对比发现:(⑤,⑥)和(⑦,⑧)结果都一样,也就是说内连接inner join on and 或者on where不管是对左表还是右表进行过滤,实际都是在生成临时表以后再进行过滤的,而且对左表和右表都起作用,这与左连接left join有本质的区别!!!

你可能感兴趣的:(MYSQL:SQL中内外连接ON AND 和ON WHERE的区别)