PostgreSQL Left Join左连接

在本节中,我们将了解ostgreSQL Left join的工作原理,它用于从左表返回数据。我们还学习了如何使用表别名、WHERE 子句、USING 子句,以及如何在 PostgreSQL Left join 子句的帮助下连接多个表。

什么是 PostgreSQL Left Outer Join 或 Left Join 子句?

PostgreSQL LEFT JOIN或Left Outer Join用于返回满足 ON 条件中定义的连接条件的左表中的所有行和其他表中的行。如果在右表中没有找到对应的记录,则返回null。

Left Join也称为Left Outer Join子句。因此,Outer是可选关键字,用于Left Join中。在PostgreSQL中,Left join与Inner Join条件平行。

下面的维恩图展示了 PostgreSQL 的Left join,我们可以很容易地理解Left Join返回 Left 表中的所有数据和Right 表中的类似数据:

PostgreSQL 左连接语法

Left Join关键字与SELECT命令一起使用,必须写在FROM关键字之后。

SELECT columns    
FROM table1    
LEFT [OUTER] JOIN table2    
ON table1.column = table2.column;   

在上面的语法中,table1指的是左表,table2指的是右表,这意味着特定条件将根据定义的连接条件返回table1中的所有记录和table2中匹配的记录。

我们将按照以下步骤在Left 或 Left Outer Join条件的帮助下连接Left 和 Right 表:

  • 首先,我们将从两个表中定义列列表,我们要在SELECT条件中选择数据。
  • 然后,我们将定义左表,即FROM子句中的表 1 。
  • 最后,我们将描述右表,即Left JOIN条件中的表2,并将连接条件写在ON关键字之后。

PostgreSQL 左连接示例

让我们看一个例子来理解PostgreSQL Left join是如何工作的:

使用 PostgreSQL Left Join 连接两个表

为此,我们将在 CREATE 命令的帮助下创建两个名为Client和Orders表的表,并使用INSERT commandM插入一些值。

首先,我们将使用CREATE命令创建Client 和 Orders表:

CREATE TABLE Client(  
client_id int primary key,   
client_name varchar not null,   
client_profession varchar not null,   
client_qualification varchar not null,  
client_salary int );  

下面的命令用于创建一个Orders表:

Create table Orders  
(client_id int primary key,  
order_id int not null,  
price int,  
order_date Date Not null);  

执行以上命令后,Client表和Orders表就创建成功了。

一旦两个表都生成了,我们就可以使用INSERT命令向其中插入一些值,如下所示:

INSERT INTO Client (client_id, client_name,   
client_profession, client_qualification, client_salary)  
VALUES  
(1, 'Emma Hernandez','Web Designer','BTech', 25000),  
(2, 'Mia Clark','Software Engineer','BE',20000),  
(3, 'Noah Rodriguez','Bussinessman','MBA',50000),  
(4, 'Martha Brown','Doctor','MBBS',75000),  
(5,'James Luther','HR','MBA',35000),  
(6,'Maria Garcia','Astronaut','Msc', 100000),  
(7,'Robert Smith','Software Tester','BTech',30000);  

在下面的命令中,我们在Orders表中插入值:

INSERT INTO Orders (client_id, order_id, price, order_date)  
VALUES  
(1, 101, 2000,'2020-05-14'),  
(2, 102, 3500,'2019-08-30'),  
(3, 103, 4000,'2020-06-23'),  
(4, 104, 2500,'2017-12-11'),  
(5, 105, 5000,'2018-10-26');  

在Client 和 Orders表中创建并插入值后,我们将在执行以下命令时获得以下输出:

表一:Client表

Select * from Client;  

表二:Orders表

Select * from Orders;  

执行完上面的命令后,我们会从Orders表中获取数据:

下面的查询用于从两个表(客户和订单)中选择记录:

SELECT Client.client_id, client_name, order_date, price   
FROM Client    
LEFT JOIN Orders   
ON Client.client_id = Orders.client_id;  

或者我们在上面的查询中使用Left Outer Join 关键字代替Left Join 关键字,因为两者都会给出类似的输出:

SELECT Client.client_id, client_name, order_date, price   
FROM Client    
LEFT Outer JOIN Orders   
ON Client.client_id = Orders.client_id;  

执行上述命令后,我们将得到以下结果:

热门文章

优秀文章