SQL Left Join2024 年 8 月 29 日 | 5 分钟阅读 - SQL 中的 Join 操作用于将多个表合并成一个表。
- 如果我们使用left join 来合并两个不同的表,那么我们将获得左表中的所有记录。但是我们只会从右表中获得那些在左表中具有相应键的记录。右表中其他不匹配左表公共列值的记录;然后,它将显示为 NULL。
- 让我们通过示例看看在 SQL 中执行左连接操作的查询语法。
现在让我们通过示例深入了解 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:department DepartmentID | Department_Name | Employee_ID |
---|
1 | 生产 | 1 | 2 | 销售 | 3 | 3 | 营销 | 4 | 4 | 帐户 | 5 | 5 | 开发 | 7 | 6 | HR | 9 | 7 | 销售 | 10 |
表 3:Loan LoanID | Branch | 总额 |
---|
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:Borrower 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 | 名称 | 年龄 | 薪金 |
---|
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: orders Order_ID | Order_Date | Cutomer_ID | 总额 |
---|
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编写一个查询来执行左连接操作,将 employee 表视为左表,将 department 表视为右表。 查询 我们使用了 SELECT 命令来检索 employee 和 department 表中存在的 EmployeeID、Employee_Name、Employee_Salary、DepartmentID、Department_Name。然后我们使用了 LEFT JOIN 关键字来执行 employee 和 department 表上的左连接操作,其中 'e' 和 'd' 是别名。这两个表在 employee 表和 department 表都存在的 EmployeeID 列上连接。 您将得到以下输出 EmployeeID | Employee_Name | Employee_Salary | DepartmentID | Department_Name |
---|
1 | Arun Tiwari | 50000 | 1 | 生产 | 2 | Sachin Rathi | 64000 | NULL | NULL | 3 | Harshal Pathak | 48000 | 2 | 销售 | 4 | Arjun Kuwar | 46000 | 3 | 营销 | 5 | Sarthak Gada | 62000 | 4 | 帐户 | 6 | Saurabh Sheik | 53000 | NULL | NULL | 7 | Shubham Singh | 29000 | 5 | 开发 | 8 | Shivam Dixit | 54000 | NULL | NULL | 9 | Vicky Gujral | 39000 | 6 | HR | 10 | Vijay Bose | 28000 | 7 | 销售 |
从 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 列上连接。 您将得到以下输出 LoanID | Branch | 总额 | 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 |
从 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_ID | Order_Date | 总额 |
---|
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 和 orders 表中检索 Customer_ID、Name、Age、Salary、Order_ID、Order_Date、Amount。检索 customer 表中的所有记录。仅从 orders 表中检索在 customer 表中具有相应 Customer_ID 的记录。
|