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

请注意,products 表中的 category_id 列引用了 categories 表中的 category_id。上面两个表之间的关系就是 category_id 列。

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

实例

使用 category_id 列将产品与类别连接起来:

SELECT product_id, product_name, category_name
FROM products
INNER JOIN categories ON products.category_id = categories.category_id;

运行实例

如果我们从上面的 products 表中选择相同的内容,我们将得到以下结果:

结果

 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:当左表或右表中有匹配时,返回所有记录