多ON连接
作者:互联网
MySql 的连接分为左连接,右连接,内连接,在实际使用时经常使用的是左连接和内连接,即LEFT JOIN 与 JOIN 。基本的操作就不多说了,在看别人的代码或者面试的时候可能会发现一个奇怪的现象,那就是连接后面跟着多个 ON 条件,类似这样
SELECT * FROM A LEFT JOIN B ON A.col1 = B.col1 AND A.col2 = B.col2...
另外,有些人还会把对单表的筛选也放在这里,类似这样
SELECT * FROM A LEFT JOIN B ON A.col1 = B.col1 AND A.col2 = x
这种写法不管是不是故意的,都会正常执行不会报错,但是不是你想要的,就要看情况了
1、内连接
内连接的效果就类似于下面这样,所以连续的ON 条件与 WHERE 后面条件并无差别
SELECT * FROM A,B WHERE A.col = B.col
2、左连接两表字段
SELECT * FROM A LEFT JOIN B ON A.col1 = B.col1 AND A.col2 = B.col2
类似于下面“左连接单表字段” 中的“单表字段在右”,对右表的连接做进一步筛选!
3、左连接单表字段
3.1 单表字段在左
SELECT * FROM A LEFT JOIN B ON A.col1 = B.col1 AND A.col2 = x
这种情况下并不生效,A 左连接 B,那么A 表的行是完全匹配的,那么在左连接中对 A 的筛选都不生效
3.2 单表字段在右
SELECT * FROM A LEFT JOIN B ON A.col1 = B.col1 AND B.col2 = x
这种情况下,在连接过程中,取A表的所有行,然后连接 B表中符合条件的行,即左连接中对 B表的筛选会生效
以上的分析都只是说明两表连接时发生的事,得到的将是一张新表,之后的 where 条件会在此基础上做进一步的筛选!!!
标签:JOIN,col2,col1,连接,SELECT,LEFT 来源: https://www.cnblogs.com/yuan404/p/16169084.html