SQL Left Join

2024 年 8 月 29 日 | 5 分钟阅读
  • SQL 中的 Join 操作用于将多个表合并成一个表。
  • 如果我们使用left join 来合并两个不同的表,那么我们将获得左表中的所有记录。但是我们只会从右表中获得那些在左表中具有相应键的记录。右表中其他不匹配左表公共列值的记录;然后,它将显示为 NULL。
  • 让我们通过示例看看在 SQL 中执行左连接操作的查询语法。

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

假设我们有以下表格和给定数据

表 1:employee

EmployeeIDEmployee_NameEmployee_Salary
1Arun Tiwari50000
2Sachin Rathi64000
3Harshal Pathak48000
4Arjun Kuwar46000
5Sarthak Gada62000
6Saurabh Sheik53000
7Shubham Singh29000
8Shivam Dixit54000
9Vicky Gujral39000
10Vijay Bose28000

表 2:department

DepartmentIDDepartment_NameEmployee_ID
1生产1
2销售3
3营销4
4帐户5
5开发7
6HR9
7销售10

表 3:Loan

LoanIDBranch总额
1B115000
2B210000
3B320000
4B4100000
5B5150000
6B650000
7B735000
8B885000

表 4:Borrower

CustIDCustNameLoanID
1Sonakshi Dixit1
2Shital Garg4
3Swara Joshi5
4Isha Deshmukh2
5Swati Bose7
6Asha Kapoor10
7Nandini Shah9

表 5: customer

客户 ID名称年龄薪金
1Aryan Jain5156000
2Arohi Dixit2125000
3Vineet Garg2431000
4Ajeet Singh2332000
5Ravi Rathod2342000
6Paras Aggrawal2250000
7Sonakshi Kapadiya2428000
8Sonali Kapoor2882000

表 6: orders

Order_IDOrder_DateCutomer_ID总额
12012-01-2023000
22012-05-1822000
32012-06-2834000
42012-04-1145000
52012-05-0488000

示例 1

编写一个查询来执行左连接操作,将 employee 表视为左表,将 department 表视为右表。

查询

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

您将得到以下输出

EmployeeIDEmployee_NameEmployee_SalaryDepartmentIDDepartment_Name
1Arun Tiwari500001生产
2Sachin Rathi64000NULLNULL
3Harshal Pathak480002销售
4Arjun Kuwar460003营销
5Sarthak Gada620004帐户
6Saurabh Sheik53000NULLNULL
7Shubham Singh290005开发
8Shivam Dixit54000NULLNULL
9Vicky Gujral390006HR
10Vijay Bose280007销售

从 employee 和 department 表中检索 EmployeeID、Employee_Name、Employee_Salary、DepartmentID、Department_Name。检索 employee 表中的所有记录。仅从 department 表中检索在 employee 表中具有相应 EmployeeID 的记录。department 表中其他不匹配 employee 表 EmployeeID 的记录;然后,它将显示为 NULL。

示例 2

编写一个查询来执行左连接操作,将 loan 表视为左表,将 borrower 表视为右表。

查询

我们使用了 SELECT 命令来检索 loan 和 borrower 表中存在的 LoanID、Branch、Amount、CustID、CustName。然后我们使用了 LEFT JOIN 关键字来执行 loan 和 borrower 表上的左连接操作,其中 'l' 和 'b' 是别名。这两个表在 loan 表和 borrower 表都存在的 LoanID 列上连接。

您将得到以下输出

LoanIDBranch总额CustIDCustName
1B1150001Sonakshi Dixit
2B2100004Isha Deshmukh
3B320000NULLNULL
4B41000002Shital Garg
5B51500003Swara Joshi
6B650000NULLNULL
7B7350005Swati Bose
8B885000NULLNULL

从 loan 和 borrower 表中检索 LoanID、Branch、Amount、CustID、CustName。检索 loan 表中的所有记录。仅从 borrower 表中检索在 loan 表中具有相应 LoanID 的记录。borrower 表中其他不匹配 loan 表 LoanID 的记录;然后,它将显示为 NULL。

示例 3

编写一个查询来执行左连接操作,将 customer 表视为左表,将 orders 表视为右表。

查询

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

您将得到以下输出

客户 ID名称年龄薪金Order_IDOrder_Date总额
1Aryan Jain5156000NULLNULLNULL
2Arohi Dixit212500012012-01-203000
2Arohi Dixit212500022012-05-182000
3Vineet Garg243100032012-06-284000
4Ajeet Singh233200042012-04-115000
5Ravi Rathod2342000NULLNULLNULL
6Paras Aggrawal2250000NULLNULLNULL
7Sonakshi Kapadiya2428000NULLNULLNULL
8Sonali Kapoor288200052012-05-048000

从 customer 和 orders 表中检索 Customer_ID、Name、Age、Salary、Order_ID、Order_Date、Amount。检索 customer 表中的所有记录。仅从 orders 表中检索在 customer 表中具有相应 Customer_ID 的记录。


下一个主题SQL Right Join