SQL 右连接

2024 年 8 月 29 日 | 5 分钟阅读
  • SQL 中的 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。然后我们使用了 RIGHT JOIN 关键字在 employee 和 department 表上执行右连接操作,其中 'e' 和 'd' 是别名。这两个表在 employee 表和 department 表都存在的 EmployeeID 列上连接。

您将得到以下输出

EmployeeIDEmployee_NameEmployee_SalaryDepartmentIDDepartment_Name
1Arun Tiwari500001生产
3Harshal Pathak480002销售
4Arjun Kuwar460003营销
5Sarthak Gada620004帐户
7Shubham Singh290005开发
9Vicky Gujral390006HR
10Vijay Bose280007销售

从 employee 和 department 表中检索 EmployeeID、Employee_Name、Employee_Salary、DepartmentID、Department_Name。检索 department 表中的所有记录。仅从 employee 表中检索具有 department 表中相应 EmployeeID 的记录。

示例 2

编写一个查询,在将 loan 表视为左表,将 borrower 表视为右表的情况下执行右连接操作。

查询

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

您将得到以下输出

LoanIDBranch总额CustIDCustName
1B1150001Sonakshi Dixit
4B41000002Shital Garg
5B51500003Swara Joshi
2B2100004Isha Deshmukh
7B7350005Swati Bose
NULLNULLNULL6Asha Kapoor
NULLNULLNULL7Nandini Shah

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

示例 3

编写一个查询,在将 customer 表视为左表,将 orders 表视为右表的情况下执行右连接操作。

查询

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

您将得到以下输出

Customer_

ID

名称年龄薪金Order_IDOrder_Date总额
2Arohi Dixit212500012012-01-203000
2Arohi Dixit212500022012-05-182000
3Vineet Garg243100032012-06-284000
4Ajeet Singh233200042012-04-115000
8Sonali Kapoor288200052012-05-048000

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


下一个主题SQL 全连接