其他分享
首页 > 其他分享> > 多ON连接

多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