hive表连接的几种方式
时间: 2025-01-31 11:02:25 浏览: 45
### Hive SQL 表连接类型及用法
#### 左外连接 (Left Outer Join)
左外连接返回左表中的所有记录以及右表中满足连接条件的记录;如果右表中不存在匹配,则结果集中相应的列为空。
```sql
SELECT e.empno, e.ename, d.dname
FROM emp e
LEFT OUTER JOIN dept d
ON e.deptno = d.deptno;
```
此查询将显示所有的员工信息,即使某些员工未分配到任何部门也会被列出,在这种情况下,`dname`字段将是NULL[^1]。
#### 右外连接 (Right Outer Join)
右外连接与左外连接相反,它返回右表中的所有记录以及左表中满足连接条件的记录;对于那些在左表找不到对应项的情况,其对应的列为NULL。
```sql
SELECT e.empno, e.ename, d.dname
FROM emp e
RIGHT OUTER JOIN dept d
ON e.deptno = d.deptno;
```
这会显示出所有部门的信息,并附带属于这些部门的员工详情。如果有部门没有任何成员,那么该部分的数据将会是空白[^2]。
#### 内部连接 (Inner Join)
内部连接仅当两表存在相同键值时才返回行。这意味着只有同时存在于两个表格里的项目才会出现在最终的结果集里。
```sql
SELECT e.empno, e.ename, d.dname
FROM emp e
JOIN dept d
ON e.deptno = d.deptno;
```
上述命令只会给出有明确所属关系(即有效部门编号)的雇员名单及其所在单位的名字[^3]。
#### 全外连接 (Full Outer Join)
全外连接会保留来自两侧输入的关系对象的所有原始数据,无论另一侧是否有相配的对象。然而需要注意的是,并不是所有的数据库都支持这个特性,而Hive确实提供了这样的功能。
```sql
SELECT COALESCE(e.empno,-99),COALESCE(e.ename,'None'),COALESCE(d.dname,'No Dept') as DepartmentName
FROM emp e
FULL OUTER JOIN dept d
ON e.deptno=d.deptno;
```
这里使用了 `COALESCE()` 函数来代替可能产生的 NULL 值,使得输出更加友好易读[^4]。
阅读全文
相关推荐


















