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