PostgreSQL 连接
JOIN
JOIN 子句用于根据两个或多个表之间的相关列来组合这些表中的行。
让我们从产品表中进行选择:
product_id | product_name | category_id------------+----------------+-------------33 | Geitost | 434 | Sasquatch Ale | 135 | Steeleye Stout | 136 | Inlagd Sill | 8
然后,查看 categories 表中的选择:
category_id | category_name-------------+----------------1 | Beverages2 | Condiments3 | Confections4 | Dairy Products
请注意,products 表中的 category_id 列指的是 categories 表中的 tegory_id。上面两个表之间的关系是 category_id 列。
然后,我们可以创建以下 SQL 语句(使用 JOIN),该语句选择两个表中具有匹配值的记录:
实例
使用 category_id 列将 products 表和 categories 表关联起来:
SELECT product_id, product_name, category_nameFROM productsINNER JOIN categories ON products.category_id = categories.category_id;
如果我们从上面的产品表中提取相同的选择,我们就会得到这个结果:
结果
product_id | product_name | category_name------------+----------------+----------------33 | Geitost | Dairy Products34 | Sasquatch Ale | Beverages35 | Steeleye Stout | Beverages36 | Inlagd Sill | Seafood
不同类型的关联
以下是 PostgreSQL 中不同类型的关联:
- INNER JOIN(内关联):返回两个表中具有匹配值的记录
- LEFT JOIN(左关联):返回左表中的所有记录和右表中匹配的记录
- RIGHT JOIN(右关联):返回右表中的所有记录和左表中匹配的记录
- FULL JOIN(全关联):当左表或右表中有匹配项时,返回所有记录