1. 内连接(INNER JOIN):
内连接返回两个表格之间匹配的行,忽略不匹配的行。
SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
2. 左外连接(LEFT JOIN 或 LEFT OUTER JOIN):
左外连接返回左表格中的所有行,以及右表格中匹配的行。如果右表格中没有匹配的行,将填充 NULL 值。
SELECT customers.customer_name, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;
3. 右外连接(RIGHT JOIN 或 RIGHT OUTER JOIN):
右外连接返回右表格中的所有行,以及左表格中匹配的行。如果左表格中没有匹配的行,将填充 NULL 值。
SELECT customers.customer_name, orders.order_id
FROM customers
RIGHT JOIN orders ON customers.customer_id = orders.customer_id;
4. 全外连接(FULL JOIN 或 FULL OUTER JOIN):
全外连接返回两个表格中的所有行,如果没有匹配的行,则将填充 NULL 值。
SELECT customers.customer_name, orders.order_id
FROM customers
FULL JOIN orders ON customers.customer_id = orders.customer_id;
5. 交叉连接(CROSS JOIN):
交叉连接返回两个表格中的所有可能的组合,它没有使用任何条件来匹配行。
SELECT customers.customer_name, products.product_name
FROM customers
CROSS JOIN products;
6. 自连接(Self Join):
自连接是指将表格与其自身连接,常用于处理包含层次关系的数据。
SELECT e1.employee_id, e1.first_name, e1.manager_id, e2.first_name AS manager_name
FROM employees e1
LEFT JOIN employees e2 ON e1.manager_id = e2.employee_id;
上述查询使用 LEFT JOIN 自连接来获取每个员工及其经理的信息。
这些是一些基本的 JOIN 类型的示例。你可以根据实际情况选择不同的连接类型,以满足你的查询需求。
转载请注明出处:http://www.zyzy.cn/article/detail/14141/PostgreSQL