PostgreSQL JOIN


JOIN

JOIN子句用于根据两个或多个表之间的相关列来组合来自两个或多个表的行。

让我们看一下从products表格:

 product_id |  product_name  | category_id
------------+----------------+-------------
         33 | Geitost        |           4
         34 | Sasquatch Ale  |           1
         35 | Steeleye Stout |           1
         36 | Inlagd Sill    |           8

然后,查看从categories表格:

 category_id | category_name
-------------+----------------
           1 | Beverages
           2 | Condiments
           3 | Confections
           4 | Dairy Products

请注意,category_id栏目中的products表指的是category_id在里面categories表格。上面两个表之间的关系是category_id柱子。

然后,我们可以创建以下 SQL 语句(使用 JOIN),该语句选择两个表中具有匹配值的记录:

示例

加入products categories使用category_id柱子:

SELECT product_id, product_name, category_name
FROM products
INNER JOIN categories ON products.category_id = categories.category_id;
运行示例 »

如果我们从上面的产品表中提取相同的选择,我们会得到以下结果:

结果

 product_id |  product_name  | category_name
------------+----------------+----------------
         33 | Geitost        | Dairy Products
         34 | Sasquatch Ale  | Beverages
         35 | Steeleye Stout | Beverages
         36 | Inlagd Sill    | Seafood

不同类型的连接

以下是 PostgreSQL 中连接的不同类型:

  • INNER JOIN:返回两个表中具有匹配值的记录
  • LEFT JOIN:返回左表中的所有记录,以及右表中匹配的记录
  • RIGHT JOIN:返回右表中的所有记录,以及左表中匹配的记录
  • FULL JOIN:当左表或右表中有匹配项时返回所有记录

PostgreSQL 练习

通过练习测试一下

练习:

在 JOIN 子句中插入缺失的部分以连接两个表orderscustomers, 使用customer_id两个表中的字段关系为:

SELECT * FROM orders
LEFT JOIN customers
 = ;
        

开始练习