MySQL Left Join左连接

MySQL 中的 Left Join 用于从多个表中查询记录。该子句类似于 Inner Join 子句,可以在 FROM 关键字之后立即与 SELECT 语句一起使用。当我们使用 Left Join 子句时,它将返回第一个(左侧)表中的所有记录,甚至从第二个(右侧)表中找不到匹配的记录。如果它不会从右侧表中找到任何匹配记录,则返回 null。

换句话说,Left Join 子句返回左表中的所有行和右表中的匹配记录,如果没有找到匹配记录,则返回 Null。此连接也可以称为左外连接子句。因此,Outer 是与 Left Join 一起使用的可选关键字。

我们可以通过以下可视化表示来理解它,其中 Left Joins 返回左侧表中的所有记录,仅返回右侧表中的匹配记录:

一、MySQL 左连接 语法

以下语法解释了连接两个或多个表的 Left Join 子句:

SELECT columns    
FROM table1    
LEFT [OUTER] JOIN table2    
ON Join_Condition;

在上面的语法中,table1是左侧表,table2是右侧表。此子句根据指定的连接条件返回 table1 中的所有记录和 table2 中的匹配记录。

二、MySQL 左连接 示例

用于连接两个表的 LEFT JOIN 子句

在这里,我们将创建两个表“ customers”和“ orders”,其中包含以下数据:

customers表:

orders表:

要从两个表中选择记录,请执行以下查询:

SELECT customers.customer_id, cust_name, price, date  
FROM customers  
LEFT JOIN orders ON customers.customer_id = orders.customer_id;  

成功执行查询后,将给出以下输出:

MySQL LEFT JOIN 与 USING 子句

表customers 和orders 具有相同的列名,即customer_id。在这种情况下,MySQL Left Join 也可以与 USING 子句一起使用来访问记录。以下语句使用带有 USING 关键字的 Left Join 子句返回客户 ID、客户名称、职业、价格和日期。

SELECT customer_id, cust_name, occupation, price, date  
FROM customers  
LEFT JOIN orders USING(customer_id);  

上面的语句将给出以下输出:

MySQL LEFT JOIN 与 Group By 子句

Left Join 也可以与 GROUP BY 子句一起使用。以下语句使用带有 GROUP BY 子句的 Left Join 子句返回客户 ID、客户名称、资格、价格和日期。

SELECT customers.customer_id, cust_name, qualification, price, date  
FROM customers  
LEFT JOIN orders ON customers.customer_id = orders.customer_id  
GROUP BY price;  

上面的语句将给出以下输出:

LEFT JOIN 与 WHERE 子句

WHERE 子句用于从表中返回过滤结果。以下示例使用 Left Join 子句说明了这一点:

SELECT customer_id, cust_name, occupation, price, date  
FROM customers  
LEFT JOIN orders   
USING(customer_id) WHERE price>2500;  

该语句给出以下结果:

MySQL LEFT JOIN 多个表

我们已经创建了两个名为“ customers”和“ orders”的表。让我们再创建一个表并将其命名为“contacts”,其中包含以下数据:

执行如下语句,将customers、orders、contacts这三张表连接起来:

SELECT customers.customer_id, cust_name, order_id, price, cellphone  
FROM customers  
LEFT JOIN contacts ON customer_id = contact_id  
LEFT JOIN orders ON customers.customer_id = orders.customer_id ORDER BY income; 

成功执行上述查询后,将给出以下输出:

三、MySQL LEFT JOIN 中 WHERE 和 ON 子句的区别

在 LEFT Join 中,条件 WHERE 和 ON 给出不同的结果。我们可以查看以下查询以了解它们的区别:

Where语句

SELECT cust_name, occupation, order_id, price, date  
FROM customers  
LEFT JOIN orders   
USING(customer_id) WHERE price=2500;  

输出结果为:

On语句

SELECT cust_name, occupation, order_id, price, date  
FROM customers LEFT JOIN orders ON price=2500;  

输出结果为:

注意:Inner Join 子句中的 WHERE 和 ON 条件总是返回相同的结果。

热门文章

优秀文章