SQL RIGHT JOIN

SQL RIGHT JOIN

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

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

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

表1:员工

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 RIGHT JOIN department d ON e.EmployeeID = d.Employee_ID;

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

您将获得以下输出:

EmployeeID Employee_Name Employee_Salary DepartmentID Department_Name
1 Arun Tiwari 50000 1 Production
3 Harshal Pathak 48000 2 Sales
4 Arjun Kuwar 46000 3 Marketing
5 Sarthak Gada 62000 4 Accounts
7 Shubham Singh 29000 5 Development
9 Vicky Gujral 39000 6 HR
10 Vijay Bose 28000 7 Sales

EmployeeID, Employee_Name, Employee_Salary, DepartmentID, Department_Name是从employee和department表中检索出来的。检索出department表中的所有记录。只检索出在department表中具有相应EmployeeID的记录从employee表中。

例2:

编写查询以执行右连接操作,将loan表作为左表,将borrower表作为右表。

查询:

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

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

您将获得以下输出:

LoanID Branch Amount CustID CustName
1 B1 15000 1 Sonakshi Dixit
4 B4 100000 2 Shital Garg
5 B5 150000 3 Swara Joshi
2 B2 10000 4 Isha Deshmukh
7 B7 35000 5 Swati Bose
NULL NULL NULL 6 Asha Kapoor
NULL NULL NULL 7 Nandini Shah

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 RIGHT JOIN orders o ON c.Customer_ID = o.Customer_ID;

我们使用SELECT命令检索客户和订单表中的Customer_ID,Name,Age,Salary,Order_ID,Order_Date,Amount。然后我们使用RIGHT JOIN关键字在客户和订单表上执行右联接操作,其中“c”和“o”是别名。这两个表根据Customer_ID列进行连接,该列存在于两个表中。

您将获得以下输出:

Customer_

ID Name Age Salary Order_ID Order_Date Amount
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
8 Sonali Kapoor 28 82000 5 2012-05-04 8000

从customer和orders表中检索到了Customer_ID,Name,Age,Salary,Order_ID,Order_Date和Amount字段。从orders表中检索到了所有记录。从customer表中只检索到了在orders表中有对应Customer_ID的记录。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程