SQL语法—left join on多条件查询深度理解

LEFT JOIN 介绍

LEFT JOIN 关键字表示从左表返回所有的行,即使右表中没有匹配。如果右表中没有匹配,则结果为 NULL。

LEFT JOIN 语法

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;

关键字 ON

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。

LEFT JOIN ON多条件深度理解

理解核心:理解左连接的原理!左连接即返回左表中所有的记录以及右表中连接字段相等的记录。所以左连接不管怎么样,左表都是完整返回的。

当只有一个条件a.id=b.id的时候:左连接就是相当于左边一条数据,匹配右边表的所有行,满足on后面的第一个条件a.id=b.id的进行返回。

当有两个条件的时候a.id=b.id and a.score>80(当第二个条件进行左表筛选时)就是左边这张表只有a.score>80的行,才会参与右表的每行匹配(但是a.score<80的行也会返回,只不过是不会匹配到右表的)。

当有两个条件的时候(第二个条件进行右表筛选)就是左边这张表每一行,参与右表的满足第二个条件的每一行的匹配。

在使用 LEFT JOIN 时,ON 和 where 条件的区别

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

你可能感兴趣的:(sql,数据库,mysql)