SQL Left Join

SQL Left Join

  • SQL中的Join操作用于将多个表合并成一个表。
  • 如果我们使用左连接来合并两个不同的表,则将得到左表中的所有记录。但我们只会得到那些在左表中具有对应键的右表记录。右表中对于左表的通用列值与左表的通用列值不匹配的其余记录将显示为NULL。
  • 让我们来看一下在SQL中执行左连接操作的查询语法。
SELECT TableName1.columnName1, TableName2.columnName2 FROM TableName1 LEFT JOIN TableName2 ON TableName1.ColumnName = TableName2.ColumnName;

现在让我们通过示例来深入了解SQL中的左连接。所有示例中的查询将使用MySQL数据库编写。

考虑到我们有以下具有给定数据的表:

表1:employee

EmployeeID Employee_Name Employee_Salary
1 Arun Tiwari 50000
2 Sachin Rathi 64000
3 Harshal Pathak 48000
4 Arjun Kuwar 46000
5 Sarthak Gada 62000
6 Saurabh Sheik 53000
7 Shubham Singh 29000
8 Shivam Dixit 54000
9 Vicky Gujral 39000
10 Vijay Bose 28000

表2:部门

DepartmentID Department_Name Employee_ID
1 Production 1
2 Sales 3
3 Marketing 4
4 Accounts 5
5 Development 7
6 HR 9
7 Sales 10

表格3:贷款

LoanID Branch Amount
1 B1 15000
2 B2 10000
3 B3 20000
4 B4 100000
5 B5 150000
6 B6 50000
7 B7 35000
8 B8 85000

表格4:借款人

CustID CustName LoanID
1 Sonakshi Dixit 1
2 Shital Garg 4
3 Swara Joshi 5
4 Isha Deshmukh 2
5 Swati Bose 7
6 Asha Kapoor 10
7 Nandini Shah 9

表格5:客户

Customer_ID Name Age Salary
1 Aryan Jain 51 56000
2 Arohi Dixit 21 25000
3 Vineet Garg 24 31000
4 Ajeet Singh 23 32000
5 Ravi Rathod 23 42000
6 Paras Aggrawal 22 50000
7 Sonakshi Kapadiya 24 28000
8 Sonali Kapoor 28 82000

表格6:订单

Order_ID Order_Date Cutomer_ID Amount
1 2012-01-20 2 3000
2 2012-05-18 2 2000
3 2012-06-28 3 4000
4 2012-04-11 4 5000
5 2012-05-04 8 8000

示例 1:

编写一个查询,将员工表作为左表,部门表作为右表进行左连接操作。

查询:

mysql> SELECT e.EmployeeID, e.Employee_Name, e.Employee_Salary, d.DepartmentID, d.Department_Name FROM employee e LEFT JOIN department d ON e.EmployeeID = d.Employee_ID;

我们使用SELECT命令检索了employee和department表中的EmployeeID、Employee_Name、Employee_Salary、DepartmentID和Department_Name。然后我们使用LEFT JOIN关键字在employee和department表上执行左连接操作,其中’e’和’d’是别名。这两个表根据两个表中都存在的列EmployeeID进行连接。

您将获得以下输出:

EmployeeID Employee_Name Employee_Salary DepartmentID Department_Name
1 Arun Tiwari 50000 1 Production
2 Sachin Rathi 64000 NULL NULL
3 Harshal Pathak 48000 2 Sales
4 Arjun Kuwar 46000 3 Marketing
5 Sarthak Gada 62000 4 Accounts
6 Saurabh Sheik 53000 NULL NULL
7 Shubham Singh 29000 5 Development
8 Shivam Dixit 54000 NULL NULL
9 Vicky Gujral 39000 6 HR
10 Vijay Bose 28000 7 Sales

EmployeeID、Employee_Name、Employee_Salary、DepartmentID、Department_Name 是从员工表和部门表中检索出来的。检索出员工表中的所有记录。只检索出在员工表中有相应EmployeeID的记录在部门表中。部门表中的其他记录,如果EmployeeID与员工表中的EmployeeID不匹配,则显示为NULL。

Example 2:

编写一个查询以执行左连接操作,将贷款表作为左表,借款人表作为右表。

查询:

mysql> SELECT l.LoanID, l.Branch, l.Amount, b.CustID, b.CustName FROM Loan l LEFT JOIN Borrower b ON l.LoanID = b.LoanID;

我们使用SELECT命令检索在贷款和借款人表中出现的LoanID、Branch、Amount、CustID、CustName。然后我们使用LEFT JOIN关键字在贷款和借款人表上执行左连接操作,其中’l’和’b’是别名。这两个表通过在两个表中都存在的LoanID列进行连接。

您将获得以下输出:

LoanID Branch Amount CustID CustName
1 B1 15000 1 Sonakshi Dixit
2 B2 10000 4 Isha Deshmukh
3 B3 20000 NULL NULL
4 B4 100000 2 Shital Garg
5 B5 150000 3 Swara Joshi
6 B6 50000 NULL NULL
7 B7 35000 5 Swati Bose
8 B8 85000 NULL NULL

LoanID,Branch,Amount,CustID,CustName 是从贷款和借款人表中检索出来的。从贷款表中检索出所有记录。仅从借款人表中检索出那些借款表中有对应LoanID的记录。借款人表中没有与贷款表的LoanID匹配的LoanID的其他记录则显示为NULL。

示例3:

编写一个查询来执行左连接操作,将客户表作为左表,将订单表作为右表。

查询:

mysql> SELECT c.Customer_ID, c.Name, c.Age, c.Salary, o.Order_ID, o.Order_Date, o.Amount FROM customer c LEFT JOIN orders o ON c.Customer_ID = o.Customer_ID;

我们使用SELECT命令从customer和orders表中检索Customer_ID、Name、Age、Salary、Order_ID、Order_Date、Amount。然后我们使用LEFT JOIN关键字在customer和orders表上执行左连接操作,其中’c’和’o’是别名。这两个表根据在两个表中都存在的列Customer_ID进行连接。

您将获得以下输出:

Customer_ID Name Age Salary Order_ID Order_Date Amount
1 Aryan Jain 51 56000 NULL NULL NULL
2 Arohi Dixit 21 25000 1 2012-01-20 3000
2 Arohi Dixit 21 25000 2 2012-05-18 2000
3 Vineet Garg 24 31000 3 2012-06-28 4000
4 Ajeet Singh 23 32000 4 2012-04-11 5000
5 Ravi Rathod 23 42000 NULL NULL NULL
6 Paras Aggrawal 22 50000 NULL NULL NULL
7 Sonakshi Kapadiya 24 28000 NULL NULL NULL
8 Sonali Kapoor 28 82000 5 2012-05-04 8000

从顾客和订单表中检索得到Customer_ID、Name、Age、Salary、Order_ID、Order_Date、Amount。从顾客表中检索得到所有记录。从订单表中只检索那些在顾客表中有对应的Customer_ID的记录。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程