mysql left join的基本用法以及on与where的区别

1. 简介

MySQL的left join是关联查询中比较常用的一种方式,可以将两张表中的数据按照一定的条件关联起来。在使用left join时,需要注意on和where条件的区别。

2. 基本用法

left join用来查询左边表(A表)中的记录,如果在右边表(B表)中有匹配的记录,则返回匹配的记录,否则返回null。

下面以两个表A和B为例,A表包含字段id和name,B表包含字段id和age。查询结果需要将A表和B表关联起来,按照id字段进行匹配,同时还需查询出A表的name字段和B表的age字段。

SELECT A.id, A.name, B.age 

FROM A

LEFT JOIN B ON A.id=B.id;

解释:

首先从A表中选出所有记录,然后按照id字段匹配B表中的记录。如果在B表中存在匹配的记录,则返回匹配的记录,同时查询A表的name字段和B表的age字段。如果在B表中不存在匹配的记录,则返回null,同时查询A表的name字段和B.age字段。

3. on与where的区别

on和where在left join中的使用方式不同。on是在进行表关联时指定的搜索条件,而where是用来筛选关联后的结果集。

3.1. on条件

on条件用于指定表关联的条件,只有满足条件的记录才会被关联起来。

以A表和B表为例,需要按照id字段进行关联,并且只查询B表中age大于20的记录。

SELECT A.id, A.name, B.age 

FROM A

LEFT JOIN B ON A.id=B.id AND B.age>20;

解释:

首先从A表中选出所有记录,然后按照id字段匹配B表中的记录,并且只返回B表中age大于20的记录。如果在B表中不存在匹配的记录,则返回null,同时查询A表的name字段和B.age字段。

3.2. where条件

where条件用于对关联后的结果集进行筛选,只有满足条件的记录才会被返回。

以A表和B表为例,需要按照id字段进行关联,并且只查询A表中id小于3的记录。

SELECT A.id, A.name, B.age 

FROM A

LEFT JOIN B ON A.id=B.id

WHERE A.id<3;

解释:

首先从A表中选出所有id小于3的记录,然后按照id字段匹配B表中的记录。如果在B表中不存在匹配的记录,则返回null,同时查询A表的name字段和B.age字段。如果在B表中存在匹配的记录,则返回匹配的记录,同时查询A表的name字段和B表的age字段。

4. 总结

left join是一种常见的表关联方式,在使用时需要注意on和where条件的区别。on条件用于指定表关联的条件,where条件用于对结果集进行筛选。通过合理的使用left join和on条件以及where条件,可以实现多张表之间的复杂查询。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签