PostgreSQL教程

PostgreSQL LEFT JOIN

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

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

PostgreSQL LEFT JOIN 或左外部连接用于返回左表中的所有行以及满足ON条件中定义的满足连接条件的另一个表中的行。并且,如果在右表中没有找到相应的记录,它将返回空。
LEFT Join可以也称为 Left Outer Join 子句。因此,外部是可选关键字,在 LEFT Join中使用。在 PostgreSQL 中, LEFT Join与 INNER Join平行
下面的Venn图显示了PostgreSQL的左连接,我们可以很容易地理解左连接返回Left表中的所有数据,并 Right表中的类似数据:
PostgreSQL Left Join

PostgreSQL左连接语法

左连接关键字与 SELECT命令一起使用并且必须写在 FROM 关键字之后。
SELECT columns  
FROM table1  
LEFT [OUTER] JOIN table2  
ON table1.column = table2.column;  
在以上语法中, table1 指的是左表,而 table2 指的是右表,这意味着特定条件将根据定义的连接条件返回 table1 中的所有记录以及 table2 中的匹配记录。
我们将在 Left or Left Outer Join 条件的帮助下,按照以下步骤连接 Left and Right表:
首先,我们将从两个表中定义列列表,我们要在其中选择 SELECT 条件下的数据。 然后,我们将在 FROM 子句中定义左表,即表1 。 最后,我们将描述 Left JOIN 条件下的Right表,它是表2 ,并在 ON 之后写入联接条件。 strong>关键字。

PostgreSQL左连接示例

让我们看一个示例,了解 PostgreSQL左连接的工作原理:

要使用PostgreSQL LEFT Join联接两个表

为此,我们将创建两个名为 Client 和的表> Orders 表,并使用 INSERT命令M 。
首先,我们将使用 CREATE 命令创建 客户和订单 表:
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);
执行上述命令后, 客户和订单 表已成功创建。
两个表均生成后,准备使用 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');
在 客户和订单 表中创建并插入值之后,执行以下命令将得到以下输出:
表1: 客户
Select * from Client;
输出
PostgreSQL Left Join
表2: 订单
Select * from Orders;
输出
执行上述命令后,我们将从 Orders 表中获取数据:
PostgreSQL LEFT Join
以下查询用于从两个表中选择记录(客户端和订单):
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;
输出
一旦执行上述命令,我们将得到以下结果:
PostgreSQL左连接
注意: 当"客户"表中的一行在"订单"表中没有匹配行时,不匹配行的order_date和price列的值将为NULL。

工作于PostgreSQL LEFT Join

在上面的屏幕快照中, LEFT Join条件从左表(客户端)中选择记录,并将 client_id,client_name 列中的值与 订单 表中的订单日期,价格列中的值。 如果这些记录相似,则 LEFT Join将创建一个新行,该行具有显示在 Select 子句中的列,并将特定行添加到结果中。 假设,如果值不相似,则 LEFT Join还会生成一个新行,该行将显示在 SELECT 命令中,并填充来自右表的列(订单), NULL 。

使用PostgreSQL LEFT Join的表别名

我们将使用表别名为联接的表分配短名称,以使命令更
通常,我们要连接的表将具有类似名称的列,例如 Client_id 列。在下面的命令中,我们将使用表别名,并且它将返回与上面类似的结果:
SELECT c.Client_id, Client_name,order_date, price
FROM Client c 
LEFT JOIN Orders o 
ON c.client_id= o.client_id;
输出
一旦执行上述命令,我们将获得以下输出:
PostgreSQL左连接

使用USING子句的PostgreSQL左连接

在此,我们将了解PostgreSQL左连接如何与使用子句。
两个表( 客户和订单 )都包含相似的列名 Client_id; 这就是为什么我们可以使用 USING 子句从表中获取值的原因。
在下面的示例中,我们使用了 USING 子句在 LEFT Join中,该值将返回 Client_id,Client_name,Client_prof,price和order_date 值,因为两个表都具有相似的 Client_id 列。
SELECT Client_id, Client_name, Client_profession, order_date, price
FROM Client  
LEFT JOIN Orders   
USING (client_id);  
输出
执行上面的语句后,我们将得到以下结果:
PostgreSQL LEFT Join

使用WHERE子句的PostgreSQL LEFT Join

在这里, WHERE 子句使我们能够返回过滤结果。并且我们还可以将WHERE条件与左连接一起使用。
在下面的示例中,我们将从两个表中选择行 Client 和 订单 ,其中 client_qualification 等于 MBA:
SELECT Client_id, Client_name, client_qualification,order_date, price
FROM Client  
LEFT JOIN Orders   
USING (client_id) WHERE client_qualification ='MBA';
输出
成功执行以上命令后,将提供以下输出:
PostgreSQL Left Join

PostgreSQL LEFT JOIN中WHERE和ON子句之间的区别

我们可以看到以下命令来了解 PostgreSQL LEFT Join中的WHERE和 ON 子句之间的区别。
在 LEFT Join中,WHERE和ON子句为我们提供了不同的输出。
首先,我们在左连接中使用 WHERE子句,如下面的命令所示:
SELECT client_name, client_profession, order_id, order_date, price
FROM Client 
LEFT JOIN Orders   
USING(client_id) WHERE price=3500;
输出
实现上述查询后,我们将获得以下输出:
PostgreSQL Left Join
现在,我们将 ON子句与Left连接一起使用,如下面的命令所示:
SELECT client_name, client_profession, order_id, order_date, price
FROM Client 
LEFT JOIN Orders ON price=3500;
输出
执行上述命令后,我们将得到以下结果:
PostgreSQL Left Join
注意: 在PostgreSQL中,如果我们在命令中使用WHERE和ON子句,则 INNER Join将始终返回类似的输出。

使用PostgreSQL Left JOIN连接各种表

在上一节中,我们已经创建了两个表作为 Client 和 订单 。现在,我们使用Left连接来组合各种表并从该特定表中获取记录。
因此,我们将如我们在以下命令中看到的那样,通过使用CREATE命令将另一个表重新创建为 Clieint_ details :
CREATE TABLE Client_details (
Phone_id int primary key, 
Mobile_number bigint,
address varchar not null
);
成功创建 Clieint_ details 表后,我们将在INSERT命令的帮助下向其中插入一些值,如以下命令所示:
INSERT INTO Client_details (Phone_id,Mobile_number,address)
VALUES (1, 9976542310,'Florida'),
(2, 9869456700,'New York'),
(3, 7345672210,'Chicago'),
(4, 9088506466,'Houston'),
(5, 9476548901,'Los Angeles');
在 Client_details 表中创建并插入值之后,执行以下命令将得到以下输出:
Select * from Client_details;
表3: Client_details
PostgreSQL Left Join
现在,我们将在 PostgreSQL Left Join 的帮助下连接多个表,例如Client, Orders和Client_details :
SELECT Client.client_name, order_id, order_date,Mobile_number
FROM Client 
LEFT JOIN Client_details 
ON Client_id= phone_id 
LEFT JOIN Orders 
ON Client.client_id = Orders.client_id 
ORDER BY client_salary;
输出
成功执行以上命令后,我们将给出以下结果:
PostgreSQL Left Join

使用PostgreSQL LEFT JOIN子句获取不匹配的记录

如果要从中获取数据该表,该表不包含来自另一个表的任何相似的数据行,因此在这种情况下,我们将使用PostgreSQL LEFT JOIN子句。
如下面的示例所示,LEFT JOIN子句用于标识没有 Mobile_number 的客户端:
SELECT client_id, client_name, mobile_number 
FROM Client 
LEFT JOIN Client_details
ON client_id = phone_id  
WHERE Mobile_number IS null;  
输出
一旦执行了上述命令,我们将得到以下结果:
PostgreSQL左连接
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4