外连接(LEFT, RIGHT, FULL OUTER JOIN)
在 Hive 中,表连接(JOIN)是处理多个表数据的重要操作之一。外连接(OUTER JOIN)是连接操作的一种,它允许我们在连接表时保留不匹配的行。本文将详细介绍三种常见的外连接:LEFT JOIN、RIGHT JOIN 和 FULL OUTER JOIN,并通过示例帮助你理解它们的用法。
什么是外连接?
外连接是一种表连接操作,它允许我们在连接两个表时保留不匹配的行。与内连接(INNER JOIN)不同,外连接会返回所有匹配的行以及至少一个表中不匹配的行。外连接分为三种类型:
- LEFT JOIN(左连接):返回左表的所有行,即使右表中 没有匹配的行。
- RIGHT JOIN(右连接):返回右表的所有行,即使左表中没有匹配的行。
- FULL OUTER JOIN(全外连接):返回左表和右表的所有行,即使没有匹配的行。
提示
外连接的关键在于“保留不匹配的行”。如果你需要保留某个表中的所有数据,即使另一个表中没有匹配的数据,外连接就是你的选择。
LEFT JOIN(左连接)
LEFT JOIN 返回左表的所有行,即使右表中没有匹配的行。如果右表中没有匹配的行,结果中对应的列将显示为 NULL
。
语法
SELECT 列名
FROM 左表
LEFT JOIN 右表
ON 左表.列名 = 右表.列名;
示例
假设我们有两个表:employees
和 departments
。
employees 表:
id | name | department_id |
---|---|---|
1 | Alice | 101 |
2 | Bob | 102 |
3 | Charlie | 103 |
4 | David | NULL |
departments 表:
id | department_name |
---|---|
101 | HR |
102 | IT |
104 | Finance |
我们使用 LEFT JOIN 连接这两个表:
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.id;