MYSQL:SQL中内外连接ON AND 和ON WHERE的区
SQL中join的用法
join关键字的作用是将多个表按一定的条件联合起来,从而可以实现从多个表中获取数据
https://www.cnblogs.com/jiuban2391/p/6609862.html
在使用inner join与where连接相同的情况
A表,B表数据 where与inner join这两种的查询类型内容一样,不知道有什么区别?
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有本质的区别!!!