MySQL LEFT JOIN Multiple Conditions

MySQL LEFT JOIN Multiple Conditions

在MySQL中,LEFT JOIN用于连接两个或多个表,以在第一个表的每一行之后返回第二个表的所有匹配行。LEFT JOIN是SQL中最常用的联接类型之一。当我们需要在多个条件之间进行LEFT JOIN时,需要使用MySQL LEFT JOIN多个条件语句。

阅读更多:MySQL 教程

LEFT JOIN语法

您可以使用以下语法来使用多个条件执行LEFT JOIN:

SELECT 
    [column_name(s)]
FROM
    table_name1
LEFT JOIN table_name2 ON table_name1.column_name1 = table_name2.column_name1
                     AND table_name1.column_name2 = table_name2.column_name2
                     AND table_name1.column_name3 = table_name2.column_name3
Mysql

让我们考虑一个名为“Users”的表和另一个名为“Orders”的表。需要按以下步骤进行操作:

  1. 创建一个名为Users的表
CREATE TABLE Users (
    id INT PRIMARY KEY,
    first_name VARCHAR(25) NOT NULL,
    last_name VARCHAR(25) NOT NULL
);
Mysql
  1. 插入几行数据
INSERT INTO Users VALUES (1, 'David', 'Brown');
INSERT INTO Users VALUES (2, 'Bill', 'Jackson');
INSERT INTO Users VALUES (3, 'Alice', 'Smith');
Mysql
  1. 创建一个名为Orders的表
CREATE TABLE Orders (
    order_id INT PRIMARY KEY,
    total_amount DECIMAL(6,2),
    order_date DATE NOT NULL,
    user_id INT,
    FOREIGN KEY (user_id) REFERENCES Users(id)
);
Mysql
  1. 插入几行数据
INSERT INTO Orders VALUES (1, 500.50, '2021-01-02', 1);
INSERT INTO Orders VALUES (2, 250.00, '2021-01-02', 2);
INSERT INTO Orders VALUES (3, 1000.00, '2021-02-14', 1);
Mysql
  1. 搜索“Users”表和“Orders”表:
SELECT 
    Users.first_name,
    Orders.total_amount,
    Orders.order_date
FROM
    Users
LEFT JOIN Orders ON Users.id = Orders.user_id 
                AND Orders.order_date >= '2021-01-01' 
                AND Orders.order_date <= '2021-02-01'
Mysql

结果如下:

first_name total_amount order_date
David 500.50 2021-01-02
Bill NULL NULL
Alice NULL NULL

在此模型中,左侧的“Users”表始终保留,并且查找与“Orders”表的匹配项。在这里,LEFT JOIN设置为仅返回数据处理代码中的任何“user_id”在“Orders”表中具有在2021年1月1日至2021年2月1日之间的订单的行。

总结

使用LEFT JOIN语句,您可以连接多个表并按条件过滤结果。左侧的表始终保持不变,而右侧的表则依赖于连接条件的返回。可以通过以上示例设置一个多个条件的LEFT JOIN语句。我们强烈建议您在使用LEFT JOIN时使用多个条件以获得更准确的搜索结果。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册