如何在PostgreSQL中执行FULL JOIN,LEFT JOIN和RIGHT JOIN

问题描述

我是Postgresql的新手。我们已经进行了一项活动,以执行“完全联接”,“左联接”和“右联接”。我有一个答案,但不确定是否正确。我需要一些帮助来纠正我。

这些是我的问题和答案。

  1. 对职员和staff_ph进行完全联接。在table_region中,region_id为8,并从最高薪水到最低薪水进行排序。
SELECT * 
FROM staff FULL JOIN staff_ph 
ON staff.id = staff_ph.id 
WHERE staff.region_id = 8 
ORDER BY staff.salary DESC;
  1. 在staff和staff_ph上执行LEFT JOIN操作,表的region_id为8,并按last_name排序。
SELECT * 
FROM staff LEFT JOIN staff_ph 
ON staff.id = staff_ph.id 
WHERE staff.region_id = 8 
ORDER BY staff.last_name DESC;
  1. 对staff和staff_ph进行正确的联接。在table WHERE中,region_id为8,并且按性别排序。
SELECT * 
FROM staff RIGHT JOIN staff_ph 
ON staff.id = staff_ph.id 
WHERE staff.region_id = 8 
ORDER BY staff.gender DESC;

解决方法

您的FULL JOIN和RIGHT JOIN并没有多大意义,因为您随后将staff.region_id伪造为NULL的行进行了过滤。另一方面,这应该归咎于问题,而不是您的答案。也许是要让这种情况持续进行,而不是在哪里。