MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL LEFT JOIN

MySQL中的LEFT JOIN用于查询多个表中的记录。该子句类似于可以在FROM关键字之后立即与SELECT语句一起使用的内部联接子句。当我们使用Left Join子句时,它将返回第一个(左侧)表中的所有记录,甚至没有从第二个(右侧)表中找到匹配的记录。如果在右侧表中找不到任何匹配记录,则返回null。
换句话说,Left Join子句从左侧表返回所有行,从右侧表返回匹配的记录,或者返回如果找不到匹配的记录,则为Null。此联接也可以称为 左外部联接子句。因此,Outer是与Left Join一起使用的可选关键字。
我们可以通过以下可视化表示来理解它,其中Left Joins从左侧表返回所有记录,而从右侧仅返回匹配的记录。表格:
MySQL LEFT JOIN

MySQL LEFT JOIN语法

以下语法说明了Left Join子句以连接两个或多个表:
SELECT columns  
FROM table1  
LEFT [OUTER] JOIN table2  
ON Join_Condition;
在以上语法中, table1 是左侧表, table2 是右侧表。此子句根据指定的 join条件返回table1的所有记录和table2的匹配记录。

MySQL LEFT JOIN示例

让我们以一些示例来了解Left Join或Left Outer Join子句的工作:

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

在这里,我们将创建包含以下数据的两个表 "customers" "orders":
表: customers
MySQL LEFT JOIN
表: orders
MySQL LEFT JOIN
要从两个表中选择记录,请执行以下查询:
SELECT customers.customer_id, cust_name, price, date
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;
成功执行查询后,它将提供以下输出:
MySQL LEFT JOIN

带有USING子句的MySQL LEFT JOIN

表客户和订单具有相同的列名,即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子句的MySQL LEFT JOIN

Left Join也可以与GROUP BY子句一起使用。以下语句使用Left Join子句和GROUP BY子句返回客户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;
上面的语句将给出以下输出:
MySQL LEFT JOIN

带有WHERE子句的LEFT JOIN

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

MySQL左连接多个表

我们已经创建了两个表,分别为 "customers" "orders"。让我们再创建一个表,并将其命名为 "contacts",其中包含以下数据:
MySQL LEFT JOIN
执行以下语句以加入三个表的客户,订单和联系人:
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

使用LEFT JOIN子句获取不匹配的记录

在这种情况下,当我们想要获取不包含任何内容的表中的记录时,LEFT JOIN子句也很有用匹配另一个表中的数据行。
下面的示例可以使我们理解它,该示例使用LEFT JOIN子句来查找没有手机号码的客户:
SELECT customer_id, cust_name, cellphone, homephone
FROM customers
LEFT JOIN contacts ON customer_id = contact_id
WHERE cellphone IS null ;
上面的语句返回以下输出:
MySQL LEFT JOIN

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;
它将给出以下返回的输出:
MySQL LEFT JOIN
子句
SELECT cust_name, occupation, order_id, price, date
FROM customers LEFT JOIN orders ON price=2500;
它将给出以下输出:
MySQL LEFT JOIN
注意: "内部联接"子句中的WHERE和ON条件始终返回相等的结果。

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4