PostgreSQL 右连接 PostgreSQL 左连接 PostgreSQL Full join PostgreSQL 右连接 在本节中,我们将了解PostgreSQL Right join的工作原理,它用于从 Right 表中返回数据。我们还学习了如何使用table-aliasing、WHERE 子句、USING 子句,以及在PostgreSQL 右连接子句的帮助下连接多个表**。 什么是 PostgreSQL Right Outer Join 或 Right Join 子句? 在PostgreSQL的右连接或右外连接用于右表返回所有行,并从另一个表中的行,其中加入的条件是在ON状态满足定义。如果从左表中没有找到相应的记录,它将返回空值。 该右连接的也可称为右外连接子句。因此,Outer是可选关键字,用于Right Join。在PostgreSQL 中,右**联接与左联接条件平行,但它会给出与联接**表相反的结果。 下面的维恩图显示了 PostgreSQL 右联接,我们可以很容易地理解右联接返回右表中的所有数据,而仅返回左表中的相似数据: PostgreSQL 右连接语法 Right Join 关键字与 SELECT 命令一起使用,并且必须写在FROM关键字之后。 SELECT columns FROM table1 Right [OUTER] JOIN table2 ON table1.column = table2.column; 在上面的语法中,table1指的是左表,而table2指的是右表,这意味着特定条件将根据定义的连接条件返回表 2 中的所有记录和table1 中的匹配记录。 我们将按照以下步骤在Right 或 Right Outer Join条件的帮助下连接Left 和 Right 表: 首先,我们将从两个表中定义列列表,我们要在SELECT条件中选择数据。 然后,我们将定义Right table,即FROM子句中的表 2。 最后,我们将描述Left table,即Right JOIN条件中的表1,并在ON关键字之后写入连接条件。 注意:在 PostgreSQL Right Join 中,如果表包含相似的列名,则 USING 和 On 子句会产生相似的输出。 PostgreSQL 右连接示例 让我们看一个例子来理解PostgreSQL 右连接是如何工作的: 使用 PostgreSQL Right Join 连接两个表 为此,我们将使用我们在PostgreSQL 教程的PostgreSQL 内连接部分中创建的Employee 和 Department\表。 表 1:员工 要查看Employee\表的记录,我们将使用SELECT 命令,如下面的命令所示: Select * from Employee; 表2:部门 要查看部门\表中的记录,我们将使用 SELECT 命令,如下面的命令所示: Select * from department; 输出 执行完上面的命令后,我们会从department\表中获取数据: 以下查询用于从两个表(Employee和Department)中选择记录: SELECT department.emp_id,dept_name,location,emp_fname, emp_lname FROM Employee Right JOIN department ON department.emp_id = Employee.emp_id order by emp_id; 输出 一旦我们执行了上面的命令,我们将得到以下结果: PostgreSQL 右连接的工作 在上面的命令中,员工\是左表,部门\是右表。 PostgreSQL 右连接条件从右表中选择记录,即部门表。 然后它使部门\表中emp_id、dept_name 和位置列的值相等,并将记录与左表 ( Employee )中每一行的emp_id列进行匹配。 如果这些记录相似,则右连接创建一个新行,其中包含选择子句中的列并将特定行添加到输出中。 否则,右连接仍会创建一个新行,其中包含两个表中的列并在结果中添加特定行,并用NULL填充左表 ( Employee ) 中的列。 注意:我们可以说 RIGHT JOIN 从右表中选择所有行,即使它们没有来自左表的相似行。 使用 PostgreSQL 右连接进行表别名 通常,我们要连接的表将具有与emp_id列名称相似的列。 我们将使用表别名来分配连接表的短名称,以使命令更易于理解。 在下面的命令中,我们将使用表别名,它返回与上面类似的结果: SELECT e.emp_id, emp_fname, emp_lname,location,dept_name FROM Employee e INNER JOIN department d ON e.emp_id = d.dept_id; 输出 一旦我们执行了上面的命令,我们将得到以下输出: PostgreSQL 使用 USING 子句右连接 在这里,我们将看到 PostgreSQL 右连接如何与 USING 子句一起工作。 例如,上面的表Employee和department\包含一个相似的列,即emp_id;因此,在这些情况下,我们使用 USING 子句从表中获取值。 在以下命令中,我们在Right join中使用USING子句,它返回值emp_id、emp_fname、emp_lname、dept_name 和 location,因为两个表都有一个相似的列:emp_id。 SELECT emp_id, emp_fname, emp_lname,dept_name,location FROM Employee RIGHT JOIN department USING(emp_id); 输出 执行上述命令后,我们将得到以下结果: 使用 WHERE 子句的 PostgreSQL 右连接 如果我们想从右表(部门)中识别在左表(员工)中没有任何匹配行的行,我们可以使用带有右连接的 WHERE 条件。 正如我们在下面的命令中看到的,我们从两个表Employee和department\中选择行,其中dept_name等于'RESEARCH': SELECT emp_id, emp_fname, emp_lname,dept_name,location FROM Employee RIGHT JOIN department USING(emp_id) WHERE dept_name ='RESEARCH'; 输出 成功执行上述命令后,它将给出以下输出: 使用 PostgreSQL Right JOIN 连接多个表 在上面的部分中,如果我们想连接两个以上的表并从该特定表中获取记录,我们现在有两个表作为员工和部门\。在这种情况下,我们将使用 Right join。 例如,这里我们将采用我们在 PostgreSQL 教程的 PostgreSQL 内部联接部分中创建的Jobs表。 要查看Jobs表的值,我们将使用SELECT子句,如下所示: Select * from Jobs; 表 3:Jobs 我们将在PostgreSQL Right Join的帮助下连接三个表,例如Employee、Department 和 Jobs\,如我们在以下命令中看到的: SELECT emp_id, emp_fname, dept_name, job_description FROM Employee RIGHT JOIN department USING (emp_id) RIGHT JOIN Jobs ON department.emp_id = jobs.job_id ORDER BY emp_id; 输出 成功执行上述命令后,我们将给出以下结果: 使用 PostgreSQL Right JOIN 子句获取不匹配的记录 如果我们想从表中获取数据,该表不包含来自其他表的任何类似数据行,那么在这种情况下,我们将使用 PostgreSQL Right Join 子句。 正如我们在下面的例子中看到,右联接子句是用来识别一个员工,其Job_description为空: SELECT emp_id, emp_fname, emp_lname, job_description FROM Employee RIGHT JOIN Jobs ON Employee.emp_id=Jobs.job_id WHERE Job_description is NULL; 输出 一旦我们执行了上面的命令,我们将得到以下结果: 概述 在PostgreSQL 右连接部分,我们学习了以下主题: 我们使用带有表别名、USING 子句、WHERE 子句的 PostgreSQL 右连接条件,并获得不匹配的数据。 我们使用PostgreSQL的右连接子句从两个表或多个选择数据超过两个表。 PostgreSQL 左连接 PostgreSQL Full join