hive left join
时间: 2025-01-07 09:05:21 浏览: 20
### Hive SQL Left Join 使用方法及实例
在Hive查询语言(HiveQL)中,`LEFT JOIN`用于返回左表中的所有记录以及右表中存在的匹配记录。如果右表中不存在匹配,则结果集中相应的列包含NULL。
#### 基本语法结构
```sql
SELECT column_names
FROM table1 t1
LEFT JOIN table2 t2 ON t1.common_column = t2.common_column;
```
此操作会保留来自`t1`(左侧表格)的所有行,即使这些行在`t2`(右侧表格)里找不到对应的键值配对[^2]。
#### 实际应用案例分析
考虑两个表:一个是用户信息表(`user`);另一个是页面浏览记录表(`page_view`)。假设想要获取特定日期访问过网站的所有用户的完整资料,即便某些用户当天并未产生任何浏览行为也应被列出:
```sql
INSERT OVERWRITE TABLE pv_users
SELECT u.*
FROM user u
LEFT SEMI JOIN page_view pv
ON (pv.userid = u.id)
WHERE pv.date = '2008-03-03';
```
上述命令通过`LEFT SEMI JOIN`实现了这一需求,它只选取那些能在右边表找到对应关系的左边表条目,并且过滤条件应用于连接后的数据集上。
对于更常规的情况——即不仅限于存在关联的数据项——则可以直接采用普通的`LEFT JOIN`:
```sql
SELECT a.s_id, a.s_name, COUNT(b.c_id), SUM(CASE WHEN b.s_score IS NULL THEN 0 ELSE b.s_score END)
FROM student AS a
LEFT JOIN score AS b ON a.s_id = b.s_id
GROUP BY a.s_id, a.s_name;
```
这段SQL展示了如何统计每位学生所修课程数量及其总分情况,即便是未参与评分的学生也会显示出来,其分数默认计为零[^4]。
阅读全文