Join 语句
Hive支持通常的SQL JOIN语句
,但是只支持等值连接,不支持非等值连接
。
表1(hive_db)
id name money 1 Bob 1200 2 Black 2100 3 BigDataBoy 5600 4 Bob 2300 5 Bob 3200 6 Black 5600
表2(city)
name addr Bob Beijing Black HuNan BigDataBoy SiChuan
查询案例
需求:表1 的姓名(name)与 表2 的 addr 合并
id name addr
查询语句
select h.id, h.name, c.addr from hive_db h join # 连接的另一张表 city c on # 筛选条件 不支持 or h.name = c.name;
查询结果
hive> select > h.id, h.name, c.addr > from > hive_db h > join > city c > on > h.name = c.name; Query ID = root_20200127215351_3f0945cf-dfd3-4c00-ba9a-b177cecf018f ... MapReduce Jobs Launched: Stage-Stage-3: Map: 1 Cumulative CPU: 2.86 sec HDFS Read: 6494 HDFS Write: 91 SUCCESS Total MapReduce CPU Time Spent: 2 seconds 860 msec OK 1 Bob Beijing 2 Black HuNan 3 BigDataBoy SiChuan 4 Bob Beijing 5 Bob Beijing 6 Black HuNan Time taken: 31.054 seconds, Fetched: 6 row(s)
内连接
join
只有进行连接的两个表中满足连接条件
的数据才会被保留下来。
select h.id, h.name, c.addr from hive_db h join city c on h.name = c.name;
左外连接
left jion
on 或者 where
筛选条件的左边的表
的查询字段的所有数据
将会保留下来
select h.id, h.name, c.addr from hive_db h left join city c on h.name = c.name;
右外连接
right jion
on 或者 where
筛选条件的右边的表
的查询字段的所有数据
将会保留下来
select h.id, h.name, c.addr from hive_db h right join city c on h.name = c.name;
满外连接
full jion
on 或者 where
筛选条件的两边的表
的查询字段的所有数据
将会保留下来,任一表的指定字段没有符合条件的值用 NULL
代替
select h.id, h.name, c.addr from hive_db h full join city c on h.name = c.name;
多表连接
注意:连接 n个表,至少需要n-1个连接条件。例如:连接三个表,至少需要两个连接条件。
版权声明:《 Hive join 连接字段 》为明妃原创文章,转载请注明出处!
最后编辑:2020-1-28 06:01:41