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 条件总是返回相同的结果。
热门文章
优秀文章