PostgreSQL 连接

JOIN

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

让我们从产品表中进行选择:

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

然后,查看 categories 表中的选择:

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

请注意,products 表中的 category_id 列指的是 categories 表中的 tegory_id。上面两个表之间的关系是 category_id 列。

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

实例

使用 category_id 列将 products 表和 categories 表关联起来:

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

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

结果
  1. product_id | product_name | category_name
  2. ------------+----------------+----------------
  3. 33 | Geitost | Dairy Products
  4. 34 | Sasquatch Ale | Beverages
  5. 35 | Steeleye Stout | Beverages
  6. 36 | Inlagd Sill | Seafood

不同类型的关联

以下是 PostgreSQL 中不同类型的关联:

  • INNER JOIN(内关联):返回两个表中具有匹配值的记录
  • LEFT JOIN(左关联):返回左表中的所有记录和右表中匹配的记录
  • RIGHT JOIN(右关联):返回右表中的所有记录和左表中匹配的记录
  • FULL JOIN(全关联):当左表或右表中有匹配项时,返回所有记录